Exception Handling
Exception:
An exception is termed as an
abnormal condition encountered by an application during execution.
An exception is an erroneous
situation that occurs during program execution. Exceptional situation arise
when an operation cannot be completed normally. When an exeception occurs in an
application, the system throws an error. The error is handled through the
process of exception handling.
For example, the System.
IO.IOException error is thrown when you try to access an illegal stream
object. Similarly, if the denominator is zero, an integer division operation
throws the System. DivideByZeroException error.
Whenever an error occurs, runtime
creates an exception object and sends it to the program in which the exception
occurred. This action is known as throwing an exception. The exception
object contains information about t the type of error.
Type of error;
There are three type of error
that can occur in the application. These are:
Ø
Syntax errors
Ø
Run-Time errors
Ø
Logical errors
Syntax error:
A syntax error occurs when
compiler cannot compile code. Such an error can occur when statements are not
constructed properly, keywords are misspelled, or punctuation is omitted. At
compilation time all the statements in the application get connected with each
other to make a single executable unit.
Run-Time error:
A run-time error occurs when an
application attempts to perform an operation, which is not allowed at runtime
an example of such an error is division by zero. A run-time error is also
termed as an exception. All the exceptions are defined in the predefined set of
classes.
Logical errors:
A logical error occurs when an
application compiles and runs properly but does not produce the expected
results.
All the exceptions are derived from
the System.Exception
class, which is the parent class of all the exceptions.
Exception Classes:
There are many exception classes
which are directly or indirectly derived from System. Exception class.
Some of the exception classes derived from the system. Exception classes are
the System.
ApplicationException and System. SystemException classes.
The System. ApplicationException
class is forwarded by a user program, and not by the Common Language Runtime
(CLR). If any user-defined
application requires its own exception, it should inherit the exception from
the ApplicationException
class.
The System.SystemException
acts as a base class for all the predefined system exceptions. The following
table describes some of the classes derived from the System. SystemException
class.
Exception Classes | Description |
System.IO.IOException | Handles I/O errors |
System.IndexOutOfrangeException | Handles errors generated whenmethod refers to an array element, which is out of its bound. |
System.NullReferenceException | Handles errors generated duringthe process of dereferencing a null object. |
System.DivideByZeroException | Handles errors generated duringthe process of dividing the dividend with zero |
System.InvalidCastException | Handles errors generated duringtypecasting |
System.OutOfMemoryException | Handles memory allocation tothe application errors. |
Exception Handling:
Exception handling is process of
providing an alternative path of execution when the application is unable to
execute as desired.
You need to handle an exception
in your program by using an exception-handler. This handler processes the
exception. In exception handling, the application is divided into blocks of
code. A block that shows the probability of raising an error contains one or
more exception handler. These handlers follow a control structure and a uniform
way of handling the system level and application level errors.
C# provides the structured
solution to error-handling problems in the form of try and catch blocks. Using
these blocks the core program statements can be separated from the
error-handling statements. The core program statements handle normal program
flow. You can also use the finally block to handle errors. These blocks for
exception-handling can be implemented using the following keywords:
Ø
try
Ø
catch
Ø
finally
The try Block:
The try block guards statements
that may throw an exception.
Try
{
//statements
that may cause an exception
}
The try block governs statements
that are enclosed within it and defines the scope of the exception-handlers
associated with it. In other words, if an exception occurs within the try
block, an appropriate exception-handler that is associated with the try block
handles the exception. A try block must have at least one catch block.
The catch Block:
You can associate an
exception-handler within the try block by providing one or more catch handlers,
immediately after the try block.
Try
{
//statements
that may cause an exception
}
Catch (…)
{
//error
handling code
}
The catch statement of the catch
block takes an object of the exception class as parameter, which refers to the
raised exception. When the exception is caught, the statements within the catch
block are executed.
The finally Block:
The finally block is used to
execute a given se of statements, whether an exception is thrown or not thrown.
For example, a file has to be closed whether an exception is raised or not. You
can place code to close the file in both the try and catch block,
Try
{
//statements
that may cause an exception
}
Catch (…)
{
//error
handling code
}
Finally
{
//statements
to be executed
}
The catch block is used to handle
exceptions that occur in a try block. The finally block is used to guarantee
the execution of statements, regardless of whether an exception has occurred or
not occurred. You can have only one finally block for each try block. It
however not mandatory to have finally block after a try block.
User-defined exception handling:
To distinguish between error
conditions programmatically, you can create user-defined exceptions. For
example, while creating File Transfer Protocol (FTP) component to perform FTP
tasks, you may want to represent the FTP-related errors as specific exception
types. The application that uses the FTP component can differentiate the
FTP-related exception from the other exceptions and perform possible remedial
tasks accordingly. In such cases, you can define custom exception classes to
represent the possible type of exceptions that may arise.
For example,
Gowtham RajamanickamPosted Apr 18, 2015, 3:52 AM
good one
DotNetGuts DNGPosted Sep 10, 2008, 6:38 PM
Check out this one for more on asp.net exception handling http://dotnetguts.blogspot.com/2007/10/error-handling-in-net-with-example.html
manoj meenaPosted Jun 6, 2007, 8:03 AM
hi m using .net 2005 in that i have a webgrid which shows data...when i click on the header of a particular column it shoud sort the column however i am getting this error ...m not able to trace the source file of error...i have migrated the code from .net 2003 to .net 2005..... Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.IndexOutOfRangeException: Index was outside the bounds of the array. Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace: [IndexOutOfRangeException: Index was outside the bounds of the array.] Infragistics.WebUI.UltraWebGrid.UltraWebGrid.RaisePostDataChangedEvent() +30593 System.Web.UI.Page.RaiseChangedEvents() +165 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3538 can u help me