
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
Handling Derived Exceptions Individually
|
377
or two of these derived exceptions in a specific manner. All other derived exceptions
should be handled in a more generic manner. You need a clean way to indicate that
certain exceptions in an exception class hierarchy should be handled differently from
the rest.
Solution
The exception handlers for C# allow for multiple catch clauses to be implemented.
Each of these
catch clauses can take a single parameter—a type derived from the
Exception class. An exception handler that uses multiple catch clauses is shown here:
try
{
int d = 0;
int z = 1/d;
}
catch(DivideByZeroException dbze)
{
Console.WriteLine("A divide by zero exception occurred. Error message == "
+ dbze.Message);
}
catch(OverflowException ofe)
{
Console.WriteLine("An Overflow occurred. Error message == " + ofe.Message);
}
catch(Exception e)
{
Console.WriteLine("Another type of error occurred. Error message == "
+ e.Message);
}
This code produces the following output:
A divide by zero exception occurred. Error message == Attempted to divide by zero.
Discussion
Notice the exception types that each catch clause handles in this try-catch block.
These specific exception types will be handled on an individual basis within their
own
catch block. Suppose the try block looks like this:
try
{
int z2 = 9999999; ...