Exceptions or errors are unusual occurrences that
happen within the logic of an application. You cannot program for every
possibility; hence, they are imminent. If an exception occurs within an
application, the user is presented with a yellow page that looks ugly.
So, how do you deal with these situations? You use exception handling
techniques in ASP.NET.
There are three ways to handle exceptions/errors in ASP.NET:
As a good programming practice, always catch specific exceptions. To view the exception types supported by the .NET Framework, use the Debug menu and select Exceptions in Visual Studio.NET.
In the following code, you try to access a table that does not exist in the Northwind database; therefore, an exception is raised. By using the try catch and finally block, you handle the exception and display a message.
There are three ways to handle exceptions/errors in ASP.NET:
- try-catch block. This is also called Structured Exception Handling (SEH).
- Error Events.
- Custom Error Page.
Try-Catch Block
Enclose code that accesses files, databases, and so forth inside a try-catch block because access to those resources might be denied due to various reasons causing an exception. The third part of this block is finally. It is executed irrespective of the fact that an exception has been raised. Hence, use the finally block to complete the housekeeping jobs.As a good programming practice, always catch specific exceptions. To view the exception types supported by the .NET Framework, use the Debug menu and select Exceptions in Visual Studio.NET.
In the following code, you try to access a table that does not exist in the Northwind database; therefore, an exception is raised. By using the try catch and finally block, you handle the exception and display a message.
- try
- {
- con = new SqlConnection("integrated security=SSPI;
- data source= (local);persist security info=False;
- initial catalog=Northwind");
- da = new SqlDataAdapter("Select * from TblNotExisits", con);
- ds = new DataSet();
- da.Fill(ds);
- }
- catch(SqlException ex)
- {
- return "Connection Unsuccessful " + ex.Message;
- }
- finally
- {
- con.Dispose();
- }
- return "Connection Successful";
Using Error Events
There are three different error events in ASP.NET that can be used in conjunction with SEH so that all exceptions are handled and the user is presented with a user-friendly error message.- Page_Error: Occurs when an error occurs within the Web page. This event is in the Web form.
- Global_Error: Occurs when an error occurs within the application. This event is in the Gloabl.asax file.
- Application_Error: Occurs when an error occurs within the application. This event is in the Gloabl.asax file.
- GetLastError: Gets the last exception that occurred on the server.
- ClearError: Use this method to handle the exception and stop the error to trigger the subsequent error event or display the error to the user.
- private void Page_Error(object sender, System.EventArgs e)
- {
- Exception ex = Server.GetLastError();
- Response.Write("Handled error from Page<br>");
- //Server.ClearError();
- }
- protected void Application_Error(Object sender, EventArgs e)
- {
- Exception ex = Server.GetLastError();
- Response.Write("Handled error from Application <br>");
- Server.ClearError();
- }
- protected void Global_Error(Object sender, EventArgs e)
- {
- Exception ex = Server.GetLastError();
- Response.Write("Handled error from Global <br>");
- }
Using Custom Error Pages
Use custom error page to handle HTTP exceptions such as page not found, unauthorized access, and so forth. You can specify custom error pages in two places:- customErrors section of the web.config file. This setting specifies the application-wide error page to display for unhandled HTTP errors. HTTP errors are identified by the HTTP status code. Include the <error> tag in the customErrors to display a status code-specific error page. Does not work with .htm or .html files. Set the mode attribute to "On" to view the error page locally.
- errorPage attribute of the @Page directive of the Web form to display the error page for the error generated on the particular Web form.
The @Page directive specifies the error page to be redirected to if an error occurs in the Web page.
- <customErrors mode="On" defaultRedirect="Error.aspx">
- <error statusCode="404" redirect="Error404.aspx" />
- </customErrors>
- <%@ Page language="c#" Codebehind="PageErr.aspx.cs"
- AutoEventWireup="false"
- Inherits="ExceptionHandling.PageErr"
- errorPage="Error.aspx" %>