Wenn Sie die Datei- und Zeilennummern möchten, müssen Sie die StackTrace-Zeichenfolge nicht analysieren. Sie können System.Diagnostics.StackTrace verwenden, um eine Stack-Ablaufverfolgung aus einer Ausnahme zu erstellen, mit der Sie die Stack-Frames auflisten und den Dateinamen, die Zeilennummer und die Spalte abrufen können, für die die Ausnahme ausgelöst wurde. Hier ist ein schnelles und schmutziges Beispiel, wie man das macht. Keine Fehlerprüfung enthalten. Damit dies funktioniert, muss eine PDB mit den Debug-Symbolen vorhanden sein, diese wird standardmäßig mit debug build erstellt.
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();
}
}
}
Die Ausgabe aus dem obigen Code sieht wie folgt aus
D:\Source\NGTests\ConsoleApplication1\Program.cs:TestFunction(30,7)
D:\Source\NGTests\ConsoleApplication1\Program.cs:Main(11,9)
duplizieren http://stackoverflow.com/questions/8338495/how-to-get-error-line-number-of-code -using-try-catch –