Feedback

Methode, Datei und Zeilennummer einer Exception bestimmen

Sprache: C#

Tritt eine Exception auf, muss man als Entwickler meist einen langen Stack-Trace lesen. Möchte man zum Beispiel die „Hard-Facts“ einer größeren Anwendung für Statistikzwecke in einer Datenbank strukturiert ablegen, benötigt man Möglichkeiten an die Datei, die Methode und die Zeilennummer heran zu kommen. Im .NET-Framework gibt es hierzu hilfreiche Methoden wie das folgende Snippet demonstriert. Die Ausgabe auf der Konsole wäre für dieses Snippet: [code]Exception message: Exception of type 'System.Exception' was thrown. Exception in file: D:Userst14011asourcereposConsoleApp1ConsoleApp1Program.cs Exception in method: Void Main(System.String[]) Exception at line numer: 12[/code]
using System;
using System.Diagnostics;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                throw new Exception();
            }
            catch (Exception ex)
            {
                var stackTrace = new StackTrace(ex, true);
                var frame = stackTrace.GetFrame(0);
                
                Console.WriteLine("Exception message: {0}", ex.Message);
                Console.WriteLine("Exception in file: {0}", frame.GetFileName());
                Console.WriteLine("Exception in method: {0}", frame.GetMethod());
                Console.WriteLine("Exception at line numer: {0}", frame.GetFileLineNumber());

                Console.Read();
            }
        }
    }
}
using System;
using System.Diagnostics;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                throw new Exception();
            }
            catch (Exception ex)
            {
                var stackTrace = new StackTrace(ex, true);
                var frame = stackTrace.GetFrame(0);
                
                Console.WriteLine("Exception message: {0}", ex.Message);
                Console.WriteLine("Exception in file: {0}", frame.GetFileName());
                Console.WriteLine("Exception in method: {0}", frame.GetMethod());
                Console.WriteLine("Exception at line numer: {0}", frame.GetFileLineNumber());

                Console.Read();
            }
        }
    }
}