Exception handling in asp.net



What is an Exception?
An exception is an event, which occurs during the execution of a program, that disrupts the normal flow of the program's instructions. 

What are the different approaches to handle exceptions in asp.net web application?
  1. Use exception-handling structures to deal with exceptions within the scope of a procedure.
    try { ---- }
    catch { ---- }
    finally { -----}
  2. Use error events to deal with exceptions within the scope of an object.
    Page_Error - The Page_Error event handler provides a way to trap errors that occur at the page level.
    Application_Error - Application_Error event handler to trap errors that occur at the application level.
  3. Custom error pages to display custom error pages for unhandled exceptions at application level.
<customErrors mode="RemoteOnly" defaultRedirect="~/errors/GeneralError.aspx" redirectMode="ResponseRewrite" /> the ResponseRewrite mode allows us to load the Error Page without redirecting the browser, so the URL stays the same, and importantly for me, exception information is not lost.

What will happen if an exception occur inside try block?
If a code in a try block causes an exception, control flow passes to immediate catch or finally block. 

What is the main use of finally block in exception handling?
Finally block is mainly used to free resources used within the try block.(Ex: closing db connections, and file connection ...)

Will the finally block get executed, if an exception doesn't occurs?
Yes, a finally block will always be executed irrespective of whether an exception has occured or not. 

Can multiple catch blocks be executed?

No, Multiple catch blocks can’t be executed. Once the proper catch code executed, the control is transferred to the finally block and then the code that follows the finally block gets executed.