When, Why and How to use Error Checking on Runtime Errors
Video Hour 1: High-level overview: Hour 1
Video Hour 2: Q&A: Hour 2
Script Highlight: Detecting Carrier type, location, company from a phone number.
When / Why to use Error Checking
For general troubleshooting of your own code use:
- Msgbox
- Debug in SciTE , AHK Studio or Notepad++
- Watch this Webinar on Debugging & Troubleshooting
Runtime Errors– An error that occurs during the execution of a program
- Use Error Handling to diagnose Runtime Errors for scripts distributed to clients
- Allows you to adapt the reported error as something meaningful to non-coders
- Frequently provides information you cannot get elsewhere
- Easy to Log the error with additional information so we can have context of what is frequently going wrong (Users are typically terrible are providing enough information)
- Can prevent the script from “locking up” / throwing an Error that is confusing to the client
- Build-into your Class / Library to help others utilizing your code
ErrorLevel and OnError
- Built-in variable which indicates success/failure of many (84) commands
- A value of Zero means success. Most commands return a 1 for failure but some have values higher than 1
- Specifies a function to run automatically when an unhandled error occurs.
- A Built-in Function name/Object to call when your script is exiting
- It can help understand why/when your script exited
There are 84 Built-in Command/Functions with Error Level
Try / Catch / Throw / Finally / Exception
- Try– Will “try” to execute a given line(s) of code
- Catch– Specifies the code to execute if an exception is raised during execution of a Try statement.
- Throw– Signals the existence of an error allowing a Try/Catch command to display info about this error. This object allows you to personalize the message / information available
- Finally– Used in conjunction with Try or Catch. Ensures that one or more statements (commands or expressions) are always executed after the execution of a try statement
- Exception()- An Object with properties to be accessed from Catch’s OutputVar
- Message:An error message or ErrorLevelvalue.
- What:The name of the command, function or label which was executing or about to execute when the error occurred.
- Extra:Additional information about the error, if available.
- File:Set automatically to the full path of the script file which contains the line at which the error occurred.
- Line:Set automatically to the line number at which the error occurred.
Best Practices / Tips & Tricks
- Remember –in Try / Catch the Exception thrown is an object.
- Not all programs accurately report ErrorLevel when run from RunWait
- –If this is the case, think of other ways to determine if your script finished correctly
- Unless you truly have a need, don’t worry about Throw or Finally. Most developers do not use them
- While typically used as pairs, Try can be used without Catch
- — in this case, it is used only to bypass the error message
- ComObjError()– can be set to 0 to disable COM errors (but isn’t recommended)
- Copy the ErrorLevel value to your own variable immediately after the command that caused the error (before its content is changed after executing another command)