81 votos

C# obtener el número de línea que arrojó excepción

en un catch bloque, ¿cómo puedo obtener el número de línea que lanzó una excepción?

112voto

Quartermeister Puntos 24729

Si necesitas el número de línea para algo más que el trazo de pila formateado que obtienes de Exception.StackTrace, puedes usar el StackTrace clase:

try
{
    throw new Exception();
}
catch (Exception ex)
{
    // Get stack trace for the exception with source file information
    var st = new StackTrace(ex, true);
    // Get the top stack frame
    var frame = st.GetFrame(0);
    // Get the line number from the stack frame
    var line = frame.GetFileLineNumber();
}

Tenga en cuenta que esto sólo funcionará si hay un archivo pdb disponible para el montaje.

12voto

Darin Dimitrov Puntos 528142

Podrías incluir .PDB archivos de símbolos asociados al conjunto que contienen información de metadatos y cuando se lanza una excepción contendrá la información completa en el stacktrace de donde se originó esta excepción. Contendrá números de línea de cada método en la pila.

11voto

SimpleButPerfect Puntos 313

De manera simple, usa el Exception.ToString() devolverá la línea después de la descripción de la excepción.

También puedes comprobar la base de datos de depuración del programa ya que contiene información/registros de depuración sobre toda la aplicación.

1voto

Zain Ali Puntos 3813

También puedes obtener el número de línea por

string lineNumber=e.StackTrace.Substring(e.StackTrace.Length - 7, 7);

donde e es Exception

0voto

Thirisangu Puntos 412

Funciona:

Var LineNumber=New StackTrace(ex, True).GetFrame(0).GetFileLineNumber();

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X