StackTrace Konstruktoren
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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
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
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.