Exception Handling

The error-handling model in ASP.NET lets you handle errors easily at the method, page, and application levels of your web applications. Most applications will use some combination of these to handle problems when they arise.

Method level: In method you can handle the exception using try…Catch…Finally block.

private void anyRoutine( )
{
	try
	{
		// Routine code in this block
	}
        catch (Exception exc)
	{
	        // error handling in this block
	}
	finally
	{
		// cleanup performed in this block
	}
} // anyRoutine

Page level: Why would you want to use this approach? It allows you to handle all page-level errors in a uniform way, which can simplify error-handling code and make it more consistent and robust. The trick is in keeping all the error-handling code in one place in the original page by leveraging the Page_Error method

private void Page_Error(Object sender,
			System.EventArgs e)
{
	Exception lastError = null;
	// get the last error that occurred
	lastError = Server.GetLastError( );

	// do any logging, notifications, etc. here

	// set the URL of the page that will display the error and
	// include querystring parameters to allow the page to display
	// what happened
	Page.ErrorPage = "ErrorPage.aspx" +
		 "?PageHeader=Error Occurred" +
		 "&Message1=" + lastError.Message +
		 "&Message2=" +
		 "This error was processed at the page level";
 } // Page_Error

Application level: By handling all exceptions at the application level, rather than at the method or page level, you can process all errors for the application in a single location. Doing all error handling in one place in an application is key to writing effective code.

protected void Application_Error(Object sender, EventArgs e)
{
	const String EVENT_LOG_NAME = "Application";

	Exception lastException = null;
	System.Diagnostics.EventLog log = null;
	String message = null;

	// get the last error that occurred
	lastException = Server.GetLastError( );

	// create the error message from the message in the last exception along
	// with a complete dump of all of the inner exceptions (all exception
	// data in the linked list of exceptions)
	message = lastException.Message +
			  "\r\r" +
			  lastException.ToString( );

	// Insert error information into the event log Or Log the Exception in text file
	// perform other notifications, etc. here
	

	// clear the error and redirect to the page used to display the
	// error information
	Server.ClearError( );
	Server.Transfer("ErrorPage.aspx" +
			"?PageHeader=Error Occurred" +
			"&Message1=" + lastException.Message +
			"&Message2=" +
			"This error was processed at the application level");
} // Application_Error

#exception-handling