Used to handle RuntimeException errors in a Try statement.


Catch [ ErrorParameter [ As ErrorType ] ]




Optional: Used to determine the type of runtime exception.


Optional: Used to 'catch' a particular type of runtime error. This can only be used in conjunction with an ErrorParameter.


The Try statement is similar to the Exception statement. Exceptions that occur within the Try block are caught by the Catch statement. It has the same syntax as the Exception statement. See the RuntimeException statement or the Runtime Errors theme for descriptions of each type of runtime error.

Unlike the Exception statement, Try statements can be nested. If a Try statement does not handle an exception or re-raises it, it can be handled by the next outermost Try statement, or by the Exception statement itself if there are no containing Try statements.

Local variables that are declared inside a Catch statement exist only within the Catch statement's scope rather than inside the whole method's scope. This means that multiple Catch statements at the same level can use the same exception variable name.

A Try block can contain its own Finally statement. The code in the Finally statement will execute regardless of whether or not an exception was raised within the Try block.

Sample code

This example uses the Catch statement to handle an out of range key that is passed to a Dictionary.

  Var a(5) As Integer
  a(6) = 45 ' Raises an OutOfBoundsException
Catch e As OutOfBoundsException
  ' The above exception is caught here for you to handle
  ErrorLabel.Text = "Exceeded size of array"
End Try

You can also Catch multiple exceptions:

  Var f As New FolderItem("test.txt")
  ListBox1.CellTextAt(10, 10) = "Hello"

Catch noe As NilObjectException
  ' code
Catch oobe As OutOfBoundsException
  ' code
End Try


All project types on all supported operating systems.

See also

Exception, Try statements; Finally, Function, Sub statements; RuntimeException error.