StackTrace Constructors

Definitie

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

e
Exception

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

e
Exception

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

e
Exception

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.

Zie ook

Van toepassing op