La verdad es que algo muy sencillo de hacer y que deberíamos hacer como norma en todas nuestras aplicaciones.
Simplemente tenemos que implementar el método “Application_Error” del “Global.asax.cs” y podremos capturar cualquier error que se produzca en la aplicación aunque no hayamos controlado la Excepción con un Try-Catch.
Una vez capturado el error, podemos mostrarlo en nuestro Log (es aconsejable tener uno), o enviarnos un email con lo que ha pasado, e incluso limpiar el error y hacer como que no ha pasado nada…
Bueno, ahí va el código:
protected void Application_Error(Object sender, EventArgs ea)
{
string uriFormat = "\r\n\r\nURI: {0}\r\n\r\n";
string exceptionFormat = "{0}: \"{1}\"\r\n{2}\r\n\r\n";
StringBuilder message = new StringBuilder();
if (Request != null)
{
message.AppendFormat(uriFormat, Request.Path);
}
if (Server != null)
{
Exception e;
for (e = Server.GetLastError(); e != null; e = e.InnerException)
{
message.AppendFormat(exceptionFormat, e.GetType().Name, e.Message, e.StackTrace);
}
}
// En este caso, escribimos en nuestro log
MyAppLogger.Log("** APP ERROR Sin controlar la excepción **\n" + message.ToString());
//Server.ClearError(); // descomentar esto para cancelar el error
}
buen dia, una consulta, en donde se declara el MyAppLogger.Log
Eso es solo un ejemplo de lo que se puede hacer si tienes alguna clase implementada que te loguee.
Sino, también puedes guardar el error en alguna tabla de la base de datos.