En un interesante debate en AltNetHispano, hemos estado dando vueltas a cómo evitar que una excepción llegue a la capa de representación.
La mejor práctica sería tener controladas las excepciones con un try-catch en los sitios adecuados y una clase o clases que sepan que hacer en cada caso.
Pero, y como muestra de una mala práctica levada a cabo por motivos más que oscuros, he enseñado un código que hicimos que se traga TODOS las expeciones sin dejar la más mínima traza:
En el fichero Global.asax. Si ese que casi nadie se acuerda de que aún existe y tiene muchas cosas buenas. Ponemos:
void Application_Error(object sender, EventArgs e)
{
Context.Server.ClearError();
Response.Redirect(Request.RawUrl);
}
Si en vez de la barbaridad que pusimos en su momento, lo utilizas como punto único de captura de las excepciones y lo mandas a las clases adecuadas, te facilitas mucho la vida utilizando las herramientas que el propio asp.net nos ofrece. Y evitamos estar reinventando la rueda haciendo Handles globales para las excepciones.