SyntaxTry (* code statements here *) on error errText display dialog "An error:" & errText end try Descriptiontry represents AppleScript's all-important error-trapping capability. If any of the statements that are enclosed in a try...end try statement block raise an error, then AppleScript catches the error and prevents it from taking down the whole script. After try catches the error (similar to Java's try...catch exception-trapping syntax), the script has the option of adding inside the try block the reserved words on error followed by any code that should execute in response to the error.
The program will then resume following the end try part of the try block, as though nothing happened. Without a try block, AppleScript's default error behavior is to display an error message in a dialog box then cancel the running script. try only catches one error at a time. By using the on error statement and its numerous parameters, you can uncover all kinds of details about the error, but you do not have to use it. In the OS versions previous to Mac OS 9, Script Editor does not compile a script that includes a try block without an on error statement. ExamplesThis example traps any errors caused by invalid data entered by the user, and then goes on its merry way without explicitly responding to any errors. try statements can be used inside and outside of your own subroutines, script objects, and libraries; they can nest other statements such as if, repeat, and tell. In fact, your entire script can run inside of a try statement, and the try block can contain other try statements: try set userReply to the text returned of¬ (display dialog "Try your best to enter a number." default answer¬ "") set invalidNum to false set userReply to userReply as real on error set invalidNum to true end try if invalidNum then display dialog "That's the best you can do?!" else display dialog "thanks for entering: " & userReply end if This script politely asks the user for a number; it sets the reply to the variable userReply. This variable is then coerced from a string to a real type, which raises an error if userReply is not a valid number. For example, "a10" couldn't be converted to a valid number. AppleScript displays this error and stops running the script if we do not catch it in the try block. If the error is raised, the statements that appear between on error and end try execute. In this case, the script sets a boolean variable invalidNum to true. Remember, the script does not have to use the on error statement part of try in Mac OS 9 or OS X. It can simply use a try block to prevent any errors from crashing the script, then go on blithely executing the rest of the code. The error handler of the try statement contains five variables from which you can obtain information about any errors. The following code shows two of the many ways that you can use try. The first demonstration catches but then skips over any errors that might be raised while it executes its code. The second use of try deploys the on error handler to grab all the data that it can about the error and display it to the user: tell application "SoundJam™ MP" try activate (* will raise an error if SoundJam isn't on the computer, but the program will just keep going *) end try try set allPlay to playlist windows -- a list of playlists repeat with pl in allPlay if (name of pl) is "tranceControl" then set mainPlay to pl end repeat set trackNameList to name of (tracks of mainPlay) set trackMsg to "" on error errMsg number errNum from objErr partial result errList¬ to errClass (* display the error message, error number, the object that is the source of the error, any partial results, and class information *) display dialog errMsg & ": " & errNum & return & "Source of¬ error was: " & objErr & return & "Here are any partial¬ results: " & errList & return & "If coercion failure it¬ involved a coercion to: " & errClass return -- exit the program end try repeat with nam in trackNameList set trackMsg to trackMsg & return & nam end repeat display dialog "The MP3 track names in the main playlist are: " &¬ return & trackMsg end tell In the prior example, if any statements in the second try block raise an error, then the on error handler displays error information using all five parameters of on error. AppleScript gives these parameters a value (e.g., the error description and number) for you if any errors are raised. The values for the partial list and to parameters are empty lists if there are no partial results or coercion problems associated with the error. Here's a rundown of the five optional on error parameters:
|