Si vous voulez les numéros de fichier et de ligne, vous n'avez pas besoin d'analyser la chaîne StackTrace. Vous pouvez utiliser System.Diagnostics.StackTrace pour créer une trace de pile à partir d'une exception, avec ceci vous pouvez énumérer les cadres de pile et obtenir le nom de fichier, le numéro de ligne et la colonne que l'exception a été levée. Voici un exemple rapide et sale de la façon de le faire. Aucune vérification d'erreur incluse. Pour que cela fonctionne un PDB doit exister avec les symboles de débogage, ceci est créé par défaut avec la version de débogage.
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 sortie du code ci-dessus ressemble à ce
D:\Source\NGTests\ConsoleApplication1\Program.cs:TestFunction(30,7)
D:\Source\NGTests\ConsoleApplication1\Program.cs:Main(11,9)
en double http://stackoverflow.com/questions/8338495/how-to-get-error-line-number-of-code -using-try-catch –