Exception : Obtener detalles del error en tiempo de ejecución C#

Muchas veces nos encontramos con la necesidad de obtener mas detalles sobre nuestros errores cuando caemos en Exception. En esta oportunidad les presento la forma de desglosar un Exception y obtener detalles como, Proyecto, Método, Función o Método, Número de Línea, etc.

Librerías

 using System;
 using System.Diagnostics;
 using System.Linq;

   public void grabaError()
   {
      try
      {
         int prueba = 0;
         prueba = Convert.ToInt32("Prueba"); // Forzamos el error para efectos de prueba
      }
      catch (Exception ex)
      {
           StackTrace st = new StackTrace(ex, true);
           StackFrame frame = st.GetFrames().Where(f => !String.IsNullOrEmpty(f.GetFileName())
                && f.GetILOffset() != StackFrame.OFFSET_UNKNOWN
                && f.GetNativeOffset() != StackFrame.OFFSET_UNKNOWN
                && !f.GetMethod().Module.Assembly.GetName().Name.Contains("mscorlib")).First();
                
           string MachineName = System.Environment.MachineName;
           string UserName = System.Environment.UserName.ToUpper();    
           string Mensaje = ex.Message;
           int LineaError = frame.GetFileLineNumber();
           string Proyecto = frame.GetMethod().Module.Assembly.GetName().Name;
           string Clase = frame.GetMethod().DeclaringType.Name;
           string metodo = frame.GetMethod().Name;
       string codigoError = frame.GetHashCode();           
      }
}

Importante es destacar que solo les muestro como rescatar los datos, este ejemplo no guardara la información y cerrando el catch los datos son destruidos les recomiendo utilizarla en un metodo aparte para efectos de Log.

Saludos

También te podría gustar...

1 respuesta

  1. klazeee dice:

    esta línea
    string codigoError = frame.GetHashCode();

    debería ser

    intcodigoError = frame.GetHashCode();

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *