2009-03-07 13 views
6

Wenn eine Ausnahme auftritt, können Sie den StackTrace ausdrucken und überprüfen.Abrufen des StackTrace

Was ist, wenn Sie den StackTrace ohne Ausnahme erhalten möchten?

Gibt es eine Möglichkeit, dies zu tun?

Antwort

9

telefonisch jederzeit aus dem Stacktrace drucken Wenn Sie eine Ausnahme zu fangen Sie StackTrace Objekt konstruieren und nützliche Informationen daraus extrahieren. Siehe das folgende Beispiel:

 StackTrace st = new StackTrace(true); 
     for(int i =0; i< st.FrameCount; i++) 
     { 
      // Note that high up the call stack, there is only 
      // one stack frame. 
      StackFrame sf = st.GetFrame(i); 
      Console.WriteLine(); 
      Console.WriteLine("High up the call stack, Method: {0}", 
       sf.GetMethod()); 

      Console.WriteLine("High up the call stack, Line Number: {0}", 
       sf.GetFileLineNumber()); 
     } 

PS: Das funktioniert auch ohne Ausnahme - siehe How to print the current stack trace in .NET without any exception.

1

System.Environment.StackTrace ist ein großartiges Werkzeug, aber seien Sie sich bewusst, dass Sie nicht immer das bekommen, wonach Sie suchen, und es gibt Unterschiede zwischen x86- und x64-Plattformen, die sich auf die Ausgabe auswirken können. Grody details here.