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
esta línea
string codigoError = frame.GetHashCode();
debería ser
intcodigoError = frame.GetHashCode();