StackTrace Constructors
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Initialiseert een nieuw exemplaar van de StackTrace klasse.
Overloads
| Name | Description |
|---|---|
| StackTrace() |
Initialiseert een nieuw exemplaar van de StackTrace klasse vanuit het frame van de beller. |
| StackTrace(Boolean) |
Initialiseert een nieuw exemplaar van de StackTrace klasse vanuit het frame van de aanroeper, optioneel het vastleggen van brongegevens. |
| StackTrace(StackFrame) |
Initialiseert een nieuw exemplaar van de StackTrace klasse die één frame bevat. |
| StackTrace(Exception) |
Initialiseert een nieuw exemplaar van de StackTrace klasse met behulp van het opgegeven uitzonderingsobject. |
| StackTrace(Int32) |
Initialiseert een nieuw exemplaar van de StackTrace klasse vanuit het frame van de aanroeper, waarbij het opgegeven aantal frames wordt overgeslagen. |
| StackTrace(Exception, Int32) |
Initialiseert een nieuw exemplaar van de StackTrace klasse met behulp van het opgegeven uitzonderingsobject en overslaat het opgegeven aantal frames. |
| StackTrace(Int32, Boolean) |
Initialiseert een nieuw exemplaar van de StackTrace klasse vanuit het frame van de aanroeper, waarbij het opgegeven aantal frames wordt overgeslagen en eventueel brongegevens worden vastgelegd. |
| StackTrace(Thread, Boolean) |
Verouderd.
Initialiseert een nieuw exemplaar van de StackTrace klasse voor een specifieke thread, optioneel het vastleggen van brongegevens. Gebruik deze constructoroverbelasting niet. |
| StackTrace(Exception, Int32, Boolean) |
Initialiseert een nieuw exemplaar van de StackTrace klasse met behulp van het opgegeven uitzonderingsobject, waarbij het opgegeven aantal frames wordt overgeslagen en eventueel brongegevens worden vastgelegd. |
| StackTrace(Exception, Boolean) |
Initialiseert een nieuw exemplaar van de StackTrace klasse met behulp van het opgegeven uitzonderingsobject en optioneel het vastleggen van brongegevens. |
StackTrace()
Initialiseert een nieuw exemplaar van de StackTrace klasse vanuit het frame van de beller.
public:
StackTrace();
public StackTrace();
Public Sub New ()
Voorbeelden
In het volgende codevoorbeeld worden de eerste en laatste functie-aanroepen in een stack-trace weergegeven.
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
Opmerkingen
Deze StackTrace wordt gemaakt met de huidige thread van de aanroeper en bevat geen bestandsnaam, regelnummer of kolomgegevens.
Gebruik deze parameterloze constructor als u een volledige tracering wilt met alleen informatie over de samenvattingsmethode over de aanroepstack.
Van toepassing op
StackTrace(Boolean)
Initialiseert een nieuw exemplaar van de StackTrace klasse vanuit het frame van de aanroeper, optioneel het vastleggen van brongegevens.
public:
StackTrace(bool fNeedFileInfo);
public StackTrace(bool fNeedFileInfo);
new System.Diagnostics.StackTrace : bool -> System.Diagnostics.StackTrace
Public Sub New (fNeedFileInfo As Boolean)
Parameters
- fNeedFileInfo
- Boolean
true om de bestandsnaam, het regelnummer en het kolomnummer vast te leggen; anders, false.
Voorbeelden
In het volgende codevoorbeeld ziet u verschillende StackTrace constructormethoden.
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
Opmerkingen
Deze StackTrace wordt gemaakt met de huidige thread van de aanroeper.
Van toepassing op
StackTrace(StackFrame)
Initialiseert een nieuw exemplaar van de StackTrace klasse die één frame bevat.
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)
Parameters
- frame
- StackFrame
Het frame dat het StackTrace object moet bevatten.
Voorbeelden
In het volgende codevoorbeeld worden stacktraceringsgegevens naar een vermelding in het gebeurtenislogboek geschreven.
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)
Opmerkingen
Gebruik deze constructor wanneer u de overhead van een volledige stack-trace niet wilt.
Zie ook
Van toepassing op
StackTrace(Exception)
Initialiseert een nieuw exemplaar van de StackTrace klasse met behulp van het opgegeven uitzonderingsobject.
public:
StackTrace(Exception ^ e);
public StackTrace(Exception e);
new System.Diagnostics.StackTrace : Exception -> System.Diagnostics.StackTrace
Public Sub New (e As Exception)
Parameters
Het uitzonderingsobject van waaruit de stack-trace moet worden samengesteld.
Uitzonderingen
De parameter e is null.
Opmerkingen
Deze StackTrace wordt gemaakt met de huidige thread van de aanroeper en bevat geen bestandsnaam, regelnummer of kolomgegevens.
De resulterende stacktracering beschrijft de stack op het moment van de uitzondering.
Zie ook
Van toepassing op
StackTrace(Int32)
Initialiseert een nieuw exemplaar van de StackTrace klasse vanuit het frame van de aanroeper, waarbij het opgegeven aantal frames wordt overgeslagen.
public:
StackTrace(int skipFrames);
public StackTrace(int skipFrames);
new System.Diagnostics.StackTrace : int -> System.Diagnostics.StackTrace
Public Sub New (skipFrames As Integer)
Parameters
- skipFrames
- Int32
Het aantal frames omhoog van waaruit de tracering moet worden gestart.
Uitzonderingen
De skipFrames parameter is negatief.
Opmerkingen
Deze StackTrace wordt gemaakt met de huidige thread van de aanroeper en bevat geen bestandsnaam, regelnummer of kolomgegevens.
Als het aantal frames dat moet worden overgeslagen groter is dan of gelijk is aan het totale aantal frames op de aanroepstack op het moment dat het exemplaar wordt gemaakt, bevat het StackTrace geen frames.
Van toepassing op
StackTrace(Exception, Int32)
Initialiseert een nieuw exemplaar van de StackTrace klasse met behulp van het opgegeven uitzonderingsobject en overslaat het opgegeven aantal 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)
Parameters
Het uitzonderingsobject van waaruit de stack-trace moet worden samengesteld.
- skipFrames
- Int32
Het aantal frames omhoog van waaruit de tracering moet worden gestart.
Uitzonderingen
De parameter e is null.
De skipFrames parameter is negatief.
Opmerkingen
De StackTrace naam, regelnummer of kolomgegevens bevat geen bestandsnaam.
De resulterende stacktracering beschrijft de stack op het moment van de uitzondering.
Als het aantal frames dat moet worden overgeslagen groter is dan of gelijk is aan het totale aantal frames op de aanroepstack op het moment dat het exemplaar wordt gemaakt, bevat het StackTrace geen frames.
Zie ook
Van toepassing op
StackTrace(Int32, Boolean)
Initialiseert een nieuw exemplaar van de StackTrace klasse vanuit het frame van de aanroeper, waarbij het opgegeven aantal frames wordt overgeslagen en eventueel brongegevens worden vastgelegd.
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)
Parameters
- skipFrames
- Int32
Het aantal frames omhoog van waaruit de tracering moet worden gestart.
- fNeedFileInfo
- Boolean
true om de bestandsnaam, het regelnummer en het kolomnummer vast te leggen; anders, false.
Uitzonderingen
De skipFrames parameter is negatief.
Voorbeelden
In het volgende codevoorbeeld ziet u verschillende StackTrace constructormethoden.
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
Opmerkingen
Als het aantal frames dat moet worden overgeslagen groter is dan of gelijk is aan het totale aantal frames op de aanroepstack op het moment dat het exemplaar wordt gemaakt, bevat het StackTrace geen frames.
Van toepassing op
StackTrace(Thread, Boolean)
Let op
This constructor has been deprecated. Please use a constructor that does not require a Thread parameter. http://go.microsoft.com/fwlink/?linkid=14202
Initialiseert een nieuw exemplaar van de StackTrace klasse voor een specifieke thread, optioneel het vastleggen van brongegevens.
Gebruik deze constructoroverbelasting niet.
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)
Parameters
- targetThread
- Thread
De thread waarvan de stack-trace wordt aangevraagd.
- needFileInfo
- Boolean
true om de bestandsnaam, het regelnummer en het kolomnummer vast te leggen; anders, false.
- Kenmerken
Uitzonderingen
De thread targetThread is niet onderbroken.
Opmerkingen
Important
Gebruik deze constructor niet. Het is verouderd en er is geen aanbevolen alternatief. Wanneer u een thread onderbreekt, kunt u niet weten welke code deze uitvoert en kunnen impasses heel eenvoudig optreden. Als u bijvoorbeeld een thread onderbreekt terwijl deze vergrendelingen bevat tijdens een evaluatie van beveiligingsmachtigingen, worden andere threads in de AppDomain thread mogelijk geblokkeerd. Als u een thread onderbreekt terwijl er een klasseconstructor wordt uitgevoerd, worden andere threads in de AppDomain poging om die klasse te gebruiken geblokkeerd.
Zie ook
Van toepassing op
StackTrace(Exception, Int32, Boolean)
Initialiseert een nieuw exemplaar van de StackTrace klasse met behulp van het opgegeven uitzonderingsobject, waarbij het opgegeven aantal frames wordt overgeslagen en eventueel brongegevens worden vastgelegd.
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)
Parameters
Het uitzonderingsobject van waaruit de stack-trace moet worden samengesteld.
- skipFrames
- Int32
Het aantal frames omhoog van waaruit de tracering moet worden gestart.
- fNeedFileInfo
- Boolean
true om de bestandsnaam, het regelnummer en het kolomnummer vast te leggen; anders, false.
Uitzonderingen
De parameter e is null.
De skipFrames parameter is negatief.
Opmerkingen
De resulterende stacktracering beschrijft de stack op het moment van de uitzondering.
Als het aantal frames dat moet worden overgeslagen groter is dan of gelijk is aan het totale aantal frames op de aanroepstack op het moment dat het exemplaar wordt gemaakt, bevat het StackTrace geen frames.
Zie ook
Van toepassing op
StackTrace(Exception, Boolean)
Initialiseert een nieuw exemplaar van de StackTrace klasse met behulp van het opgegeven uitzonderingsobject en optioneel het vastleggen van brongegevens.
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)
Parameters
- exceptione
- Exception
Het uitzonderingsobject van waaruit de stack-trace moet worden samengesteld.
- needFileInfofNeedFileInfo
- Boolean
true om de bestandsnaam, het regelnummer en het kolomnummer vast te leggen; anders, false.
Uitzonderingen
De parameter e is null.
Opmerkingen
De resulterende stacktracering beschrijft de stack op het moment van de uitzondering.