2011-03-24 10 views
6

¿Es posible extraer el nombre de clase y el nombre de archivo de un objeto de excepción?Extraer clase y nombre de archivo de la excepción

Estoy buscando integrar un mejor registro en mi aplicación, y quiero incluir información detallada de dónde ocurrió la excepción.

En MVC Stacktrace no devuelve el nombre del nombre de archivo &, y estoy un poco perdido en cuanto a dónde buscarlos.

Gracias

Respuesta

18

Se puede crear un objeto StackTrace de un objeto de excepción. Incluirá el StackFrame s que la excepción tiene información. A continuación, puede encontrar los nombres de los archivos y métodos, las posiciones y demás, si están disponibles. Por supuesto, esto debería ser evidente, pero todo esto está disponible solo si compiló su ensamblado para incluir símbolos de depuración (que supongo que podría estar disponible en MVC).

catch (Exception ex) 
{ 
    var st = new StackTrace(ex, true); // create the stack trace 
    var query = st.GetFrames()   // get the frames 
        .Select(frame => new 
        {     // get the info 
         FileName = frame.GetFileName(), 
         LineNumber = frame.GetFileLineNumber(), 
         ColumnNumber = frame.GetFileColumnNumber(), 
         Method = frame.GetMethod(), 
         Class = frame.GetMethod().DeclaringType, 
        }); 
    // log the information obtained from the query 
} 
+0

Good work buddy! –

Cuestiones relacionadas