Visual Basic Language Reference |
|
Try...Catch...Finally Statements
Provides a way to handle some or all possible errors that may occur in a given block of code, while still running code.
Try
[ tryStatements ]
[ Catch [ exception [ As type ] ] [ When expression ]
[ catchStatements ] ]
[ Exit Try ]
...
[ Finally
[ finallyStatements ] ]
End Try
Parts
- tryStatements
- Optional. Statement(s) where an error can occur. Can be a compound statement.
- Catch
- Optional. Multiple Catch blocks permitted. If an exception occurs while processing the Try block, each Catch statement is examined in textual order to determine if it handles the exception. Exception represents the exception that has been thrown.
- exception
- Optional. Any variable name. The initial value of exception is the value of the thrown error. Used with Catch to specify the error caught.
- type
- Optional. Specifies the type of class filter. If the value of exception is of the type specified by type or of a derived type, the identifier becomes bound to the exception object.
- When
- Optional. A Catch statement with a When clause will only catch exceptions when expression evaluates to True. A When clause is only applied after checking the type of the exception, and expression may refer to the identifier representing the exception.
- expression
- Optional. Must be implicitly convertible to Boolean. Any expression that describes a generic filter. Typically used to filter by error number. Used with When keyword to specify circumstances under which the error is caught.
- catchStatements
- Optional. Statement(s) to handle errors occurring in the associated Try block. Can be a compound statement.
- Exit Try
- Optional. Keyword that breaks out of the Try?Catch?Finally structure. Execution resumes with the code immediately following the End Try statement. Not allowed in Finally blocks.
- Finally
- Optional. A Finally block is always executed when execution leaves any part of the Try statement.
- finallyStatements
- Optional. Statement(s) that are executed after all other error processing has occurred.
- End Try
- Terminates the Try...Catch...Finally structure.
Remarks
If errors occur that the programmer has not handled, Visual Studio for Applications simply provides its normal error message to a user, as if there was no error handling.
The Try block contains code where an error can occur, while the Catch block contains code to handle any error that does occur. If an error occurs in the Try block, program control is passed to the appropriate Catch statement for disposition. The exception argument is an instance of the Exception class or an instance of a class that derives from the Exception class corresponding to the error that occurred in the Try block. The Exception class instance contains information about the error including, among other things, its number and message.
Note If a Try statement does not contain at least one Catch block it must contain a Finally block.
Example
The following simplified example illustrates the structure of the Try?Catch?Finally statement:
Public Sub TryExample()
Dim x As Integer = 5 ' Declare variables.
Dim y As Integer = 0
Try
' Set up structured error handling.
x /= y ' Cause a "Divide by Zero" error.
Catch
ex As Exception When y = 0 ' Catch the error.
MsgBox(ex.toString) ' Show friendly error message.
Finally
Beep() ' Beep after error processing.
End Try
End Sub
See Also
End Statement | Err Object | Exit Statement | On Error Statement | Exception Class