Exception Filtering in the Catch Block in VB.net
By: Steven Holzner in VB.net Tutorials on 2010-11-17
When you're handling exceptions, you usually want to handle different types of exceptions differently, according to the nature of the exception that occurred. This process is called filtering. There are actually two ways to filter exceptions with Catch blocks. First, you can filter on specific classes of exceptions, which means you have to prepare for the various exceptions you want to handle.
Exceptions are based on the Visual Basic Exception class (which, like all other objects in Visual Basic, is based on the Object class). In general, when you use Visual Basic statements that are capable of throwing exceptions, the Visual Basic documentation will tell you what possible exceptions each statement may throw. However, that won't help in tracking down exceptions that occur when you're just using the general syntax of the language, such as when you divide two numbers and an overflow exception occurs. To track down what class such an exception corresponds to, you could take a look at the Visual Basic documentation for the Exception class, which lists the classes derived from it:
Object Exception ApplicationException CodeDomSerializerException InvalidPrinterException IOException IsolatedStorageException PathTooLongException CookieException ProtocolViolationException WebException MissingManifestResourceException SUDSGeneratorException SUDSParserException SystemException UriFormatException SoapException
Each derived class itself has many derived classes, and if you keep searching (each class above is a hyperlink in the documentation, so you just keep clicking), you'll eventually find the OverflowException class, which is based on the ArithmeticException class, which is based on the SystemException class, which is based on the Exception class:
Object Exception SystemException ArithmeticException OverflowException
There is an easier way to do this if you can generate the exception you're anticipating-just use the Exception class's getType method (such as e.getType) to get the type of the exception as a string. Here's an example where I'm providing code to explicitly handle overflow exceptions:
Module Module1
Sub Main()
Dim int1 = 0, int2 = 1, int3 As Integer
Try
int3 = int2 / int1
System.Console.WriteLine("The answer is {0}", int3)
Catch e As OverflowException
System.Console.WriteLine("Exception: Arithmetic overflow!")
End Try
End Sub
End Module
The second exception-filtering option lets you use the Catch statement to filter on any conditional expression, using the When keyword. This option is often used to filter by exception number, which you can check with the Err object's Number property. Here's an example that filters overflow exceptions by number (which is exception number 6 in Visual Basic .NET):
Module Module1
Sub Main()
Dim int1 = 0, int2 = 1, int3 As Integer
Try
int3 = int2 / int1
System.Console.WriteLine("The answer is {0}", int3)
Catch When Err.Number = 6
System.Console.WriteLine("Exception: Arithmetic overflow!")
End Try
End Sub
End Module
Add Comment
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
- Your name, rating, website address, town, country, state and comment will be publicly displayed if entered.
- Aside from the data entered into these form fields, other stored data about your comment will include:
- Your IP address (not displayed)
- The time/date of your submission (displayed)
- Your email address will not be shared. It is collected for only two reasons:
- Administrative purposes, should a need to contact you arise.
- To inform you of new comments, should you subscribe to receive notifications.
- A cookie may be set on your computer. This is used to remember your inputs. It will expire by itself.
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
- Although the administrator will attempt to moderate comments, it is impossible for every comment to have been moderated at any given time.
- You acknowledge that all comments express the views and opinions of the original author and not those of the administrator.
- You agree not to post any material which is knowingly false, obscene, hateful, threatening, harassing or invasive of a person's privacy.
- The administrator has the right to edit, move or remove any comment for any reason and without notice.
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
- Data Science
- Android
- React Native
- AJAX
- ASP.net
- C
- C++
- C#
- Cocoa
- Cloud Computing
- HTML5
- Java
- Javascript
- JSF
- JSP
- J2ME
- Java Beans
- EJB
- JDBC
- Linux
- Mac OS X
- iPhone
- MySQL
- Office 365
- Perl
- PHP
- Python
- Ruby
- VB.net
- Hibernate
- Struts
- SAP
- Trends
- Tech Reviews
- WebServices
- XML
- Certification
- Interview
categories
Related Tutorials
Changes in Controls from VB6 to VB.net
Unstructured Exception Handling in VB.net
Structured Exception Handling in VB.net
Creating Sub Procedures in VB.net
Passing a Variable Number of Arguments to Procedures in VB.net
Specifying Optional Arguments with default values in Procedures in VB.net
Preserving a Variable's Values between Procedure Calls in VB.net
Throwing an Exception in VB.net
Comments