Si desea los números de archivo y línea, no necesita analizar la cadena StackTrace. Puede usar System.Diagnostics.StackTrace para crear un seguimiento de pila a partir de una excepción, con esto puede enumerar los marcos de pila y obtener el nombre de archivo, el número de línea y la columna donde se generó la excepción. Aquí hay un ejemplo rápido y sucio de cómo hacer esto. Sin verificación de errores incluida. Para que esto funcione, debe existir un PDB con los símbolos de depuración, esto se crea de manera predeterminada con la creación de depuración.
using System;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
try
{
TestFunction();
}
catch (Exception ex)
{
StackTrace st = new StackTrace(ex, true);
StackFrame[] frames = st.GetFrames();
// Iterate over the frames extracting the information you need
foreach (StackFrame frame in frames)
{
Console.WriteLine("{0}:{1}({2},{3})", frame.GetFileName(), frame.GetMethod().Name, frame.GetFileLineNumber(), frame.GetFileColumnNumber());
}
}
Console.ReadKey();
}
static void TestFunction()
{
throw new InvalidOperationException();
}
}
}
La salida del código anterior es el siguiente
D:\Source\NGTests\ConsoleApplication1\Program.cs:TestFunction(30,7)
D:\Source\NGTests\ConsoleApplication1\Program.cs:Main(11,9)
duplicar http://stackoverflow.com/questions/8338495/how-to-get-error-line-number-of-code -using-try-catch –