Something to keep in mind: Exceptions slow down an app's performance. One easy way to cut down on the number of exceptions is when you are using Response.Redirect in your ASP.NET apps. Under the covers, the CLR throws a ThreadAbortException when you call Response.Redirect. It does this to make sure execution ends on the page. If you use the overloaded Redirect method with the boolean param set to false, the ThreadAbortException will not be thrown.
private
void SomeEvent(object sender, System.EventArgs e)
{
//will throw an exception under the covers to ensure execution ends
Response.Redirect(http://www.google.com);
//performs better when this overload function's second arg is set to false
//because an exception will not be thrown.
Response.Redirect("http://www.google.com", false);
}