rror handling, paying taxes, and root canals. Each one conjures up a number of negative mental imagessome real, some imagined. While I cannot do much to ease the pain of paying taxes or reduce the suffering you might experience during a root canal, this article will enlighten you regarding the ins and outs of error handling in ASP.NET.
Errors you need to concern yourself with fall into two distinct error typeshandled errors and unhandled errors. A handled error occurs within your applicationyou are ready for it and have code in place to take action upon it. For example, maybe you have coded your application to divide one number by another. What if the second number is 0? A divide by zero error will occur and hopefully you will have code in place to handle such a problem. Unhandled errors are those errors that you cannot foresee happening. An example is an incorrectly typed URL reference for a page on your Web site that results in a "404 Page Not Found" error. Hopefully you will have the pieces in place that will direct the user to a much cleaner and more refined page than the default "404 Page Not Found" page.
|The cornerstone on which structured error handling is built is the Try...Catch...Finally code block.
Let's start by discussing the language constructs available to handle errors within ASP.NET applications. We will take a look at system exception objects, the Try
commands, and creating you own Exception
Errors and Exceptions
While the terms error and exception are often used interchangeably, there is a distinct difference between the two. An error happens during the execution of a block of program code and alters the normal program flow, thus creating an Exception
object. When the flow of a program is interrupted by an error, the program will search for exception handling code to tell the program how to react. Simply put, an error is an event. That event creates an object called an exception. This Exception
object contains information about the error including when and where it occurred.
|The <customErrors> section of the web.config file is your last chance to handle an unexpected error.|
Unlike throwing a punch, you will often hear the phrase "throwing an exception." This means that an error occurred in a code block and an Exception
object was created.
The generic Exception
class from which all Exception
objects are derived is the System.Exception
class. It contains a number of properties designed to give you an easy way to capture and manage information about the Exception object. Table 1
Table 1: System.Exception properties
Structured vs. Unstructured Error Handling
Gets or sets a link to the Help file associated with this exception
Gets the Exception instance that caused the current exception
Gets a message that describes the current exception
Gets or sets the name of the application or the object that causes the error
Gets a string representation of the items on the call stack at the time the current exception was thrown
Gets the method that throws the current exception
Visual Basic .NET and ASP.NET support structured error handling. Structured error handling uses a control structure that acts as the exception handling mechanism. This structure allows your program to determine which type of exception was thrown and act accordingly.
Unstructured error handling is the type of error handling supported in prior versions of Visual Basic and VBScript. It is comprised of an Err
object and commands such as On Error
, and Error
. This article will not discuss the details of unstructured error handling since structured error handling is the preferred method to trap and manage errors.