Se si desidera il numero di file e di riga, non è necessario analizzare la stringa StackTrace. È possibile utilizzare System.Diagnostics.StackTrace per creare una traccia dello stack da un'eccezione, con questo è possibile enumerare i frame dello stack e ottenere il nome file, il numero di riga e la colonna in cui è stata sollevata l'eccezione. Ecco un esempio veloce e sporco di come farlo. Nessun controllo degli errori incluso. Affinchè questo funzioni un PDB deve esistere con i simboli di debug, questo viene creato di default con il debug build.
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();
}
}
}
L'output del codice di cui sopra appare così
D:\Source\NGTests\ConsoleApplication1\Program.cs:TestFunction(30,7)
D:\Source\NGTests\ConsoleApplication1\Program.cs:Main(11,9)
fonte
2010-04-27 18:11:34
duplicare http://stackoverflow.com/questions/8338495/how-to-get-error-line-number-of-code -using-try-catch –