Walkthrough: Structured Exception Handling (Visual Basic)

While you can still employ the On Error statement to handle exceptions in your code in order to provide unstructured exception handling, Visual Basic 2005 also supports structured exception handling, which you can use to create and maintain programs with comprehensive error handling. In structured exception handling, blocks of code test for specific circumstances and react accordingly.

This walkthrough demonstrates how to add structured exception handling to a program. Specifically, it shows how to use the Try...Catch...Finally statement to handle exceptions, and how to perform error filtering within Catch blocks.


You cannot combine both structured and unstructured exception handling within a single procedure.


Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. The Visual Studio edition that you have and the settings that you use determine these elements. For more information, see Visual Studio Settings.

Creating the Application

The following application is a customer order form for a company that sells teddy bears. The user interface consists of the following controls:

  • One TextBox for the customer's name.

  • Two ComboBox controls to select the color and size of the bear.

  • One Order Button.

  • Three labels that convey the purpose of each control to the user.

  • When the user enters the requested information and clicks the Order button, the application displays a summary of the order.

To create the application

  1. From the File menu, select New Project. The New Project dialog box appears.

  2. In the Project Types window, select Visual Basic and Windows if these are not already selected, select Windows Application from the Templates window.

  3. In the Properties window under Name, enter TeddyBearProject and click OK. The project is added to the Solution Explorer, and the Windows Forms Designer opens.

  4. Add the controls to the form, and set their properties as specified.



    Property Values





    Bear Order Form





    Customer Name





    Available Colors






    Black, Brown, Spotted

    Bear Color





    Available Sizes






    Small, Normal, Large







Adding Functionality

Now that the controls and their properties are added and set, you must place code behind them to make them function. The following code handles the Click event for the Order button and displays a message to the customer.

To add functionality to the form and its controls

  • Add the following code to the Order button's Click event.

    Dim bearOrder As String
    bearOrder =
      String.Format("You have ordered a {0} {1} bear.",
      bearSize.SelectedItem, bearColor.SelectedItem)

The application is now ready for you to add structured exception handling code.

Adding a Try...Catch Block

To ensure that the customer has specified a color for the bear, add a Try...Catch statement. Remember the following:

  • A Catch clause with no identifier catches all exceptions.

  • A Catch clause with a When clause catches exceptions only when the expression evaluates to True; the expression type must be implicitly convertible to Boolean.

To add a simple Try...Catch block

  • Add the following code to the Order button's Click event after the section that tests the size and color values, that is, after String.Format ("You have ordered a {0} {1} bear.", BearSize.SelectedItem, BearColor.SelectedItem). This code throws an exception if it encounters an invalid color value. In adding Try statements, be aware that the editor automatically supplies End Try at the end of the statement.

        If bearColor.SelectedIndex < 0 OrElse
           bearColor.SelectedIndex > 2 Then
             Throw New System.Exception()
        End If
        ' The Catch statement handles errors caused by a lack of bear color.
    Catch ex As Exception When bearColor.SelectedIndex < 0
        bearOrder = String.Format("You must select a bear color!")
        Beep() ' Beep at the end.
    End Try

To add an additional Catch clause

  1. Add a new item, "Purple", to the bearColor ComboBox control.

  2. Add the following code after the code line bearOrder = String.Format("You must select a bear color!").

    Catch ex As Exception When bearColor.SelectedIndex = 3
        bearOrder = String.Format("There are no bears of that color.")

You can add as many Catch clauses as necessary to your code.


You can now test the application to make sure it works correctly.

To build and run the application

  1. From the Build menu, select Build TeddyBearProject.

  2. Press F5 to run the application. The main form appears.

To test the application

  1. Enter a name in the Customer Name text box, and then select a color and size for the bear from the Available Colors and Available Sizes combo boxes.

  2. Click the Order button. If you selected either Black, Brown, or Spotted as the color in the previous step, a message appears stating the size and color of the bear you ordered.

    If you do not specify a color, a message appears prompting you to do so.

  3. Click OK to cancel the message.

  4. In the Available Colors text box, select Purple, and then click the Order button. A message appears stating that purple bears are not available.

See Also


On Error Statement (Visual Basic)

Try...Catch...Finally Statement (Visual Basic)

Throw Statement (Visual Basic)


Structured Exception Handling Overview for Visual Basic

Other Resources

Exception Handling Tasks (Visual Basic)