StackTrace Konstruktoren

Definition

Initialisiert eine neue Instanz der StackTrace-Klasse.

Überlädt

Name Beschreibung
StackTrace()

Initialisiert eine neue Instanz der StackTrace Klasse aus dem Frame des Aufrufers.

StackTrace(Boolean)

Initialisiert eine neue Instanz der StackTrace Klasse aus dem Frame des Aufrufers, optional erfassen Sie Quellinformationen.

StackTrace(IEnumerable<StackFrame>)

Erstellt eine Stapelablaufverfolgung aus einer Gruppe von StackFrame Objekten.

StackTrace(StackFrame)

Initialisiert eine neue Instanz der Klasse, die StackTrace einen einzelnen Frame enthält.

StackTrace(Exception)

Initialisiert eine neue Instanz der StackTrace Klasse mithilfe des bereitgestellten Ausnahmeobjekts.

StackTrace(Int32)

Initialisiert eine neue Instanz der StackTrace Klasse aus dem Frame des Aufrufers, wobei die angegebene Anzahl von Frames übersprungen wird.

StackTrace(Exception, Int32)

Initialisiert eine neue Instanz der StackTrace Klasse mithilfe des bereitgestellten Ausnahmeobjekts und überspringt die angegebene Anzahl von Frames.

StackTrace(Int32, Boolean)

Initialisiert eine neue Instanz der StackTrace Klasse aus dem Frame des Aufrufers, überspringt die angegebene Anzahl von Frames und erfasst optional Quellinformationen.

StackTrace(Thread, Boolean)
Veraltet.

Initialisiert eine neue Instanz der StackTrace Klasse für einen bestimmten Thread und erfasst optional Quellinformationen.

Verwenden Sie diese Konstruktorüberladung nicht.

StackTrace(Exception, Int32, Boolean)

Initialisiert eine neue Instanz der Klasse mithilfe des StackTrace bereitgestellten Ausnahmeobjekts, überspringt die angegebene Anzahl von Frames und erfasst optional Quellinformationen.

StackTrace(Exception, Boolean)

Initialisiert eine neue Instanz der StackTrace Klasse, wobei das bereitgestellte Ausnahmeobjekt verwendet wird und optional Quellinformationen erfasst werden.

StackTrace()

Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs

Initialisiert eine neue Instanz der StackTrace Klasse aus dem Frame des Aufrufers.

public:
 StackTrace();
public StackTrace();
Public Sub New ()

Beispiele

Im folgenden Codebeispiel werden die ersten und letzten Funktionsaufrufe in einer Stapelablaufverfolgung angezeigt.

public void Level5Method()
{
   try
   {
      ClassLevel6 nestedClass = new ClassLevel6();
      nestedClass.Level6Method();
   }
   catch (Exception e)
   {
      Console.WriteLine(" Level5Method exception handler");

      StackTrace st = new StackTrace();

      // Display the most recent function call.
      StackFrame sf = st.GetFrame(0);
      Console.WriteLine();
      Console.WriteLine("  Exception in method: ");
      Console.WriteLine("      {0}", sf.GetMethod());

      if (st.FrameCount >1)
      {
         // Display the highest-level function call
         // in the trace.
         sf = st.GetFrame(st.FrameCount-1);
         Console.WriteLine("  Original function call at top of call stack):");
         Console.WriteLine("      {0}", sf.GetMethod());
      }

      Console.WriteLine();
      Console.WriteLine("   ... throwing exception to next level ...");
      Console.WriteLine("-------------------------------------------------\n");
      throw e;
   }
}
Public Sub Level5Method()
   Try
      Dim nestedClass As New ClassLevel6()
      nestedClass.Level6Method()
   Catch e As Exception
      Console.WriteLine(" Level5Method exception handler")
      
      Dim st As New StackTrace()
      
      ' Display the most recent function call.
      Dim sf As StackFrame = st.GetFrame(0)
      Console.WriteLine()
      Console.WriteLine("  Exception in method: ")
      Console.WriteLine("      {0}", sf.GetMethod())
      
      If st.FrameCount > 1 Then
         ' Display the highest-level function call in the trace.
         sf = st.GetFrame((st.FrameCount - 1))
         Console.WriteLine("  Original function call at top of call stack):")
         Console.WriteLine("      {0}", sf.GetMethod())
      End If
      
      Console.WriteLine()
      Console.WriteLine("   ... throwing exception to next level ...")
      Console.WriteLine("-------------------------------------------------")
      Console.WriteLine()
      Throw e
   End Try
End Sub

Hinweise

Das StackTrace Wird mit dem aktuellen Thread des Aufrufers erstellt und enthält keine Dateinamen-, Zeilen- oder Spalteninformationen.

Verwenden Sie diesen parameterlosen Konstruktor, wenn Sie eine vollständige Ablaufverfolgung mit nur Zusammenfassenden Methodeninformationen zum Aufrufstapel wünschen.

Gilt für:

StackTrace(Boolean)

Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs

Initialisiert eine neue Instanz der StackTrace Klasse aus dem Frame des Aufrufers, optional erfassen Sie Quellinformationen.

public:
 StackTrace(bool fNeedFileInfo);
public StackTrace(bool fNeedFileInfo);
new System.Diagnostics.StackTrace : bool -> System.Diagnostics.StackTrace
Public Sub New (fNeedFileInfo As Boolean)

Parameter

fNeedFileInfo
Boolean

trueum den Dateinamen, die Zeilennummer und die Spaltennummer zu erfassen; andernfalls . false

Beispiele

Im folgenden Codebeispiel werden verschiedene StackTrace Konstruktormethoden veranschaulicht.

public void Level2Method()
{
   try
   {
      ClassLevel3 nestedClass = new ClassLevel3();
      nestedClass.Level3Method();
   }
   catch (Exception e)
   {
      Console.WriteLine(" Level2Method exception handler");

      // Display the full call stack at this level.
      StackTrace st1 = new StackTrace(true);
      Console.WriteLine(" Stack trace for this level: {0}",
         st1.ToString());

      // Build a stack trace from one frame, skipping the current
      // frame and using the next frame.
      StackTrace st2 = new StackTrace(new StackFrame(1, true));
      Console.WriteLine(" Stack trace built with next level frame: {0}",
         st2.ToString());

      // Build a stack trace skipping the current frame, and
      // including all the other frames.
      StackTrace st3 = new StackTrace(1, true);
      Console.WriteLine(" Stack trace built from the next level up: {0}",
         st3.ToString());

      Console.WriteLine();
      Console.WriteLine("   ... throwing exception to next level ...");
      Console.WriteLine("-------------------------------------------------\n");
      throw e;
   }
}
Public Sub Level2Method()
   Try
      Dim nestedClass As New ClassLevel3
      nestedClass.Level3Method()
   
   Catch e As Exception
      Console.WriteLine(" Level2Method exception handler")
      
      ' Display the full call stack at this level.
      Dim st1 As New StackTrace(True)
      Console.WriteLine(" Stack trace for this level: {0}", _
         st1.ToString())
      
      ' Build a stack trace from one frame, skipping the current
      ' frame and using the next frame.
      Dim st2 As New StackTrace(New StackFrame(1, True))
      Console.WriteLine(" Stack trace built with next level frame: {0}", _
          st2.ToString())
      
      ' Build a stack trace skipping the current frame, and
      ' including all the other frames.
      Dim st3 As New StackTrace(1, True)
      Console.WriteLine(" Stack trace built from the next level up: {0}", _
          st3.ToString())
      
      Console.WriteLine()
      Console.WriteLine("   ... throwing exception to next level ...")
      Console.WriteLine("-------------------------------------------------")
      Console.WriteLine()
      Throw e
   End Try
End Sub

Hinweise

Das StackTrace wird mit dem aktuellen Thread des Aufrufers erstellt.

Gilt für:

StackTrace(IEnumerable<StackFrame>)

Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs

Erstellt eine Stapelablaufverfolgung aus einer Gruppe von StackFrame Objekten.

public:
 StackTrace(System::Collections::Generic::IEnumerable<System::Diagnostics::StackFrame ^> ^ frames);
public StackTrace(System.Collections.Generic.IEnumerable<System.Diagnostics.StackFrame> frames);
new System.Diagnostics.StackTrace : seq<System.Diagnostics.StackFrame> -> System.Diagnostics.StackTrace
Public Sub New (frames As IEnumerable(Of StackFrame))

Parameter

frames
IEnumerable<StackFrame>

Der Satz von Stapelframes, die in der Stapelablaufverfolgung vorhanden sein sollen.

Gilt für:

StackTrace(StackFrame)

Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs

Initialisiert eine neue Instanz der Klasse, die StackTrace einen einzelnen Frame enthält.

public:
 StackTrace(System::Diagnostics::StackFrame ^ frame);
public StackTrace(System.Diagnostics.StackFrame frame);
new System.Diagnostics.StackTrace : System.Diagnostics.StackFrame -> System.Diagnostics.StackTrace
Public Sub New (frame As StackFrame)

Parameter

frame
StackFrame

Der Frame, den das StackTrace Objekt enthalten soll.

Beispiele

Im folgenden Codebeispiel werden Stapelablaufverfolgungsinformationen in einen Ereignisprotokolleintrag geschrieben.

StackFrame fr = new StackFrame(1,true);
StackTrace st = new StackTrace(fr);
EventLog.WriteEntry(fr.GetMethod().Name,
                    st.ToString(),
                    EventLogEntryType.Warning);
Dim frame As New StackFrame(1, True)
Dim strace As New StackTrace(frame)            

EventLog.WriteEntry(frame.GetMethod().Name, _
                    strace.ToString(), _
                    EventLogEntryType.Warning)

Hinweise

Verwenden Sie diesen Konstruktor, wenn Sie den Aufwand einer vollständigen Stapelablaufverfolgung nicht benötigen.

Weitere Informationen

Gilt für:

StackTrace(Exception)

Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs

Initialisiert eine neue Instanz der StackTrace Klasse mithilfe des bereitgestellten Ausnahmeobjekts.

public:
 StackTrace(Exception ^ e);
public StackTrace(Exception e);
new System.Diagnostics.StackTrace : Exception -> System.Diagnostics.StackTrace
Public Sub New (e As Exception)

Parameter

e
Exception

Das Ausnahmeobjekt, aus dem die Stapelablaufverfolgung erstellt werden soll.

Ausnahmen

Der Parameter e ist null.

Hinweise

Das StackTrace Wird mit dem aktuellen Thread des Aufrufers erstellt und enthält keine Dateinamen-, Zeilen- oder Spalteninformationen.

Die resultierende Stapelablaufverfolgung beschreibt den Stapel zum Zeitpunkt der Ausnahme.

Weitere Informationen

Gilt für:

StackTrace(Int32)

Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs

Initialisiert eine neue Instanz der StackTrace Klasse aus dem Frame des Aufrufers, wobei die angegebene Anzahl von Frames übersprungen wird.

public:
 StackTrace(int skipFrames);
public StackTrace(int skipFrames);
new System.Diagnostics.StackTrace : int -> System.Diagnostics.StackTrace
Public Sub New (skipFrames As Integer)

Parameter

skipFrames
Int32

Die Anzahl der Frames, die den Stapel nach oben richten, aus dem die Ablaufverfolgung gestartet werden soll.

Ausnahmen

Der skipFrames Parameter ist negativ.

Hinweise

Das StackTrace Wird mit dem aktuellen Thread des Aufrufers erstellt und enthält keine Dateinamen-, Zeilen- oder Spalteninformationen.

Wenn die Anzahl der zu überspringenden Frames größer oder gleich der Gesamtanzahl der Frames im Aufrufstapel ist, wenn die Instanz erstellt wird, enthält dies StackTrace keine Frames.

Gilt für:

StackTrace(Exception, Int32)

Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs

Initialisiert eine neue Instanz der StackTrace Klasse mithilfe des bereitgestellten Ausnahmeobjekts und überspringt die angegebene Anzahl von Frames.

public:
 StackTrace(Exception ^ e, int skipFrames);
public StackTrace(Exception e, int skipFrames);
new System.Diagnostics.StackTrace : Exception * int -> System.Diagnostics.StackTrace
Public Sub New (e As Exception, skipFrames As Integer)

Parameter

e
Exception

Das Ausnahmeobjekt, aus dem die Stapelablaufverfolgung erstellt werden soll.

skipFrames
Int32

Die Anzahl der Frames, die den Stapel nach oben richten, aus dem die Ablaufverfolgung gestartet werden soll.

Ausnahmen

Der Parameter e ist null.

Der skipFrames Parameter ist negativ.

Hinweise

Dies StackTrace enthält keine Dateinamen-, Zeilen- oder Spalteninformationen.

Die resultierende Stapelablaufverfolgung beschreibt den Stapel zum Zeitpunkt der Ausnahme.

Wenn die Anzahl der zu überspringenden Frames größer oder gleich der Gesamtanzahl der Frames im Aufrufstapel ist, wenn die Instanz erstellt wird, enthält dies StackTrace keine Frames.

Weitere Informationen

Gilt für:

StackTrace(Int32, Boolean)

Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs

Initialisiert eine neue Instanz der StackTrace Klasse aus dem Frame des Aufrufers, überspringt die angegebene Anzahl von Frames und erfasst optional Quellinformationen.

public:
 StackTrace(int skipFrames, bool fNeedFileInfo);
public StackTrace(int skipFrames, bool fNeedFileInfo);
new System.Diagnostics.StackTrace : int * bool -> System.Diagnostics.StackTrace
Public Sub New (skipFrames As Integer, fNeedFileInfo As Boolean)

Parameter

skipFrames
Int32

Die Anzahl der Frames, die den Stapel nach oben richten, aus dem die Ablaufverfolgung gestartet werden soll.

fNeedFileInfo
Boolean

trueum den Dateinamen, die Zeilennummer und die Spaltennummer zu erfassen; andernfalls . false

Ausnahmen

Der skipFrames Parameter ist negativ.

Beispiele

Im folgenden Codebeispiel werden verschiedene StackTrace Konstruktormethoden veranschaulicht.

public void Level2Method()
{
   try
   {
      ClassLevel3 nestedClass = new ClassLevel3();
      nestedClass.Level3Method();
   }
   catch (Exception e)
   {
      Console.WriteLine(" Level2Method exception handler");

      // Display the full call stack at this level.
      StackTrace st1 = new StackTrace(true);
      Console.WriteLine(" Stack trace for this level: {0}",
         st1.ToString());

      // Build a stack trace from one frame, skipping the current
      // frame and using the next frame.
      StackTrace st2 = new StackTrace(new StackFrame(1, true));
      Console.WriteLine(" Stack trace built with next level frame: {0}",
         st2.ToString());

      // Build a stack trace skipping the current frame, and
      // including all the other frames.
      StackTrace st3 = new StackTrace(1, true);
      Console.WriteLine(" Stack trace built from the next level up: {0}",
         st3.ToString());

      Console.WriteLine();
      Console.WriteLine("   ... throwing exception to next level ...");
      Console.WriteLine("-------------------------------------------------\n");
      throw e;
   }
}
Public Sub Level2Method()
   Try
      Dim nestedClass As New ClassLevel3
      nestedClass.Level3Method()
   
   Catch e As Exception
      Console.WriteLine(" Level2Method exception handler")
      
      ' Display the full call stack at this level.
      Dim st1 As New StackTrace(True)
      Console.WriteLine(" Stack trace for this level: {0}", _
         st1.ToString())
      
      ' Build a stack trace from one frame, skipping the current
      ' frame and using the next frame.
      Dim st2 As New StackTrace(New StackFrame(1, True))
      Console.WriteLine(" Stack trace built with next level frame: {0}", _
          st2.ToString())
      
      ' Build a stack trace skipping the current frame, and
      ' including all the other frames.
      Dim st3 As New StackTrace(1, True)
      Console.WriteLine(" Stack trace built from the next level up: {0}", _
          st3.ToString())
      
      Console.WriteLine()
      Console.WriteLine("   ... throwing exception to next level ...")
      Console.WriteLine("-------------------------------------------------")
      Console.WriteLine()
      Throw e
   End Try
End Sub

Hinweise

Wenn die Anzahl der zu überspringenden Frames größer oder gleich der Gesamtanzahl der Frames im Aufrufstapel ist, wenn die Instanz erstellt wird, enthält dies StackTrace keine Frames.

Gilt für:

StackTrace(Thread, Boolean)

Achtung

This constructor has been deprecated. Please use a constructor that does not require a Thread parameter. http://go.microsoft.com/fwlink/?linkid=14202

Initialisiert eine neue Instanz der StackTrace Klasse für einen bestimmten Thread und erfasst optional Quellinformationen.

Verwenden Sie diese Konstruktorüberladung nicht.

public:
 StackTrace(System::Threading::Thread ^ targetThread, bool needFileInfo);
public StackTrace(System.Threading.Thread targetThread, bool needFileInfo);
[System.Obsolete("This constructor has been deprecated.  Please use a constructor that does not require a Thread parameter.  http://go.microsoft.com/fwlink/?linkid=14202")]
public StackTrace(System.Threading.Thread targetThread, bool needFileInfo);
new System.Diagnostics.StackTrace : System.Threading.Thread * bool -> System.Diagnostics.StackTrace
[<System.Obsolete("This constructor has been deprecated.  Please use a constructor that does not require a Thread parameter.  http://go.microsoft.com/fwlink/?linkid=14202")>]
new System.Diagnostics.StackTrace : System.Threading.Thread * bool -> System.Diagnostics.StackTrace
Public Sub New (targetThread As Thread, needFileInfo As Boolean)

Parameter

targetThread
Thread

Der Thread, dessen Stapelablaufverfolgung angefordert wird.

needFileInfo
Boolean

trueum den Dateinamen, die Zeilennummer und die Spaltennummer zu erfassen; andernfalls . false

Attribute

Ausnahmen

Der Thread targetThread wird nicht angehalten.

Hinweise

Important

Verwenden Sie diesen Konstruktor nicht. Es ist veraltet, und es gibt keine empfohlene Alternative. Wenn Sie einen Thread anhalten, haben Sie keine Möglichkeit zu wissen, welcher Code ausgeführt wird, und Deadlocks können sehr einfach auftreten. Wenn Sie z. B. einen Thread anhalten, während er Sperren während einer Sicherheitsberechtigungsauswertung enthält, werden möglicherweise andere Threads in der AppDomain Datei blockiert. Wenn Sie einen Thread während der Ausführung eines Klassenkonstruktors anhalten, werden andere Threads in dem AppDomain Versuch, diese Klasse zu verwenden, blockiert.

Weitere Informationen

Gilt für:

StackTrace(Exception, Int32, Boolean)

Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs

Initialisiert eine neue Instanz der Klasse mithilfe des StackTrace bereitgestellten Ausnahmeobjekts, überspringt die angegebene Anzahl von Frames und erfasst optional Quellinformationen.

public:
 StackTrace(Exception ^ e, int skipFrames, bool fNeedFileInfo);
public StackTrace(Exception e, int skipFrames, bool fNeedFileInfo);
new System.Diagnostics.StackTrace : Exception * int * bool -> System.Diagnostics.StackTrace
Public Sub New (e As Exception, skipFrames As Integer, fNeedFileInfo As Boolean)

Parameter

e
Exception

Das Ausnahmeobjekt, aus dem die Stapelablaufverfolgung erstellt werden soll.

skipFrames
Int32

Die Anzahl der Frames, die den Stapel nach oben richten, aus dem die Ablaufverfolgung gestartet werden soll.

fNeedFileInfo
Boolean

trueum den Dateinamen, die Zeilennummer und die Spaltennummer zu erfassen; andernfalls . false

Ausnahmen

Der Parameter e ist null.

Der skipFrames Parameter ist negativ.

Hinweise

Die resultierende Stapelablaufverfolgung beschreibt den Stapel zum Zeitpunkt der Ausnahme.

Wenn die Anzahl der zu überspringenden Frames größer oder gleich der Gesamtanzahl der Frames im Aufrufstapel ist, wenn die Instanz erstellt wird, enthält dies StackTrace keine Frames.

Weitere Informationen

Gilt für:

StackTrace(Exception, Boolean)

Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs
Quelle:
StackTrace.cs

Initialisiert eine neue Instanz der StackTrace Klasse, wobei das bereitgestellte Ausnahmeobjekt verwendet wird und optional Quellinformationen erfasst werden.

public:
 StackTrace(Exception ^ exception, bool needFileInfo);
public:
 StackTrace(Exception ^ e, bool fNeedFileInfo);
public StackTrace(Exception exception, bool needFileInfo);
public StackTrace(Exception e, bool fNeedFileInfo);
new System.Diagnostics.StackTrace : Exception * bool -> System.Diagnostics.StackTrace
new System.Diagnostics.StackTrace : Exception * bool -> System.Diagnostics.StackTrace
Public Sub New (exception As Exception, needFileInfo As Boolean)
Public Sub New (e As Exception, fNeedFileInfo As Boolean)

Parameter

exceptione
Exception

Das Ausnahmeobjekt, aus dem die Stapelablaufverfolgung erstellt werden soll.

needFileInfofNeedFileInfo
Boolean

trueum den Dateinamen, die Zeilennummer und die Spaltennummer zu erfassen; andernfalls . false

Ausnahmen

Der Parameter e ist null.

Hinweise

Die resultierende Stapelablaufverfolgung beschreibt den Stapel zum Zeitpunkt der Ausnahme.

Weitere Informationen

Gilt für: