StackTrace Konstruktorer

Definition

Initierar en ny instans av StackTrace klassen.

Överlagringar

Name Description
StackTrace()

Initierar en ny instans av StackTrace klassen från anroparens ram.

StackTrace(Boolean)

Initierar en ny instans av StackTrace klassen från anroparens ram, och kan också samla in källinformation.

StackTrace(StackFrame)

Initierar en ny instans av StackTrace klassen som innehåller en enda ram.

StackTrace(Exception)

Initierar en ny instans av klassen med hjälp av StackTrace det angivna undantagsobjektet.

StackTrace(Int32)

Initierar en ny instans av StackTrace klassen från anroparens ram och hoppar över det angivna antalet bildrutor.

StackTrace(Exception, Int32)

Initierar en ny instans av klassen med hjälp av StackTrace det angivna undantagsobjektet och hoppar över det angivna antalet bildrutor.

StackTrace(Int32, Boolean)

Initierar en ny instans av StackTrace klassen från anroparens ram, hoppar över det angivna antalet bildrutor och kan också samla in källinformation.

StackTrace(Thread, Boolean)
Föråldrad.

Initierar en ny instans av StackTrace klassen för en specifik tråd, om du vill samla in källinformation.

Använd inte den här konstruktorns överlagring.

StackTrace(Exception, Int32, Boolean)

Initierar en ny instans av klassen med hjälp av StackTrace det angivna undantagsobjektet, hoppar över det angivna antalet bildrutor och kan också samla in källinformation.

StackTrace(Exception, Boolean)

Initierar en ny instans av klassen med hjälp av StackTrace det angivna undantagsobjektet och kan också samla in källinformation.

StackTrace()

Initierar en ny instans av StackTrace klassen från anroparens ram.

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

Exempel

I följande kodexempel visas de första och sista funktionsanropen i en stackspårning.

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

Kommentarer

StackTrace Skapas med anroparens aktuella tråd och innehåller inte filnamn, radnummer eller kolumninformation.

Använd den här parameterlösa konstruktorn när du vill ha en fullständig spårning med endast sammanfattningsmetodinformation om anropsstacken.

Gäller för

StackTrace(Boolean)

Initierar en ny instans av StackTrace klassen från anroparens ram, och kan också samla in källinformation.

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

Parametrar

fNeedFileInfo
Boolean

trueför att samla in filnamn, radnummer och kolumnnummer. annars . false

Exempel

I följande kodexempel visas olika StackTrace konstruktormetoder.

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

Kommentarer

StackTrace Skapas med anroparens aktuella tråd.

Gäller för

StackTrace(StackFrame)

Initierar en ny instans av StackTrace klassen som innehåller en enda ram.

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)

Parametrar

frame
StackFrame

Den ram som StackTrace objektet ska innehålla.

Exempel

I följande kodexempel skrivs stackspårningsinformation till en händelseloggpost.

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)

Kommentarer

Använd den här konstruktorn när du inte vill ha en fullständig stackspårning.

Se även

Gäller för

StackTrace(Exception)

Initierar en ny instans av klassen med hjälp av StackTrace det angivna undantagsobjektet.

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

Parametrar

e
Exception

Undantagsobjektet som stackspårningen ska konstrueras från.

Undantag

Parametern e är null.

Kommentarer

StackTrace Skapas med anroparens aktuella tråd och innehåller inte filnamn, radnummer eller kolumninformation.

Den resulterande stackspårningen beskriver stacken vid tidpunkten för undantaget.

Se även

Gäller för

StackTrace(Int32)

Initierar en ny instans av StackTrace klassen från anroparens ram och hoppar över det angivna antalet bildrutor.

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

Parametrar

skipFrames
Int32

Antalet ramar upp stacken som spårningen ska startas från.

Undantag

Parametern skipFrames är negativ.

Kommentarer

StackTrace Skapas med anroparens aktuella tråd och innehåller inte filnamn, radnummer eller kolumninformation.

Om antalet bildrutor som ska hoppa över är större än eller lika med det totala antalet bildrutor i anropsstacken när instansen skapas, StackTrace innehåller den inga bildrutor.

Gäller för

StackTrace(Exception, Int32)

Initierar en ny instans av klassen med hjälp av StackTrace det angivna undantagsobjektet och hoppar över det angivna antalet bildrutor.

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)

Parametrar

e
Exception

Undantagsobjektet som stackspårningen ska konstrueras från.

skipFrames
Int32

Antalet ramar upp stacken som spårningen ska startas från.

Undantag

Parametern e är null.

Parametern skipFrames är negativ.

Kommentarer

Innehåller StackTrace inte filnamn, radnummer eller kolumninformation.

Den resulterande stackspårningen beskriver stacken vid tidpunkten för undantaget.

Om antalet bildrutor som ska hoppa över är större än eller lika med det totala antalet bildrutor i anropsstacken när instansen skapas, StackTrace innehåller den inga bildrutor.

Se även

Gäller för

StackTrace(Int32, Boolean)

Initierar en ny instans av StackTrace klassen från anroparens ram, hoppar över det angivna antalet bildrutor och kan också samla in källinformation.

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)

Parametrar

skipFrames
Int32

Antalet ramar upp stacken som spårningen ska startas från.

fNeedFileInfo
Boolean

trueför att samla in filnamn, radnummer och kolumnnummer. annars . false

Undantag

Parametern skipFrames är negativ.

Exempel

I följande kodexempel visas olika StackTrace konstruktormetoder.

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

Kommentarer

Om antalet bildrutor som ska hoppa över är större än eller lika med det totala antalet bildrutor i anropsstacken när instansen skapas, StackTrace innehåller den inga bildrutor.

Gäller för

StackTrace(Thread, Boolean)

Varning

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

Initierar en ny instans av StackTrace klassen för en specifik tråd, om du vill samla in källinformation.

Använd inte den här konstruktorns överlagring.

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)

Parametrar

targetThread
Thread

Tråden vars stackspårning begärs.

needFileInfo
Boolean

trueför att samla in filnamn, radnummer och kolumnnummer. annars . false

Attribut

Undantag

Tråden targetThread är inte pausad.

Kommentarer

Important

Använd inte den här konstruktorn. Det är föråldrat och det finns inget rekommenderat alternativ. När du pausar en tråd har du inget sätt att veta vilken kod den kör, och dödlägen kan inträffa mycket enkelt. Om du till exempel pausar en tråd medan den låser sig under en utvärdering av säkerhetsbehörigheten kan andra trådar i AppDomain blockeras. Om du pausar en tråd medan den kör en klasskonstruktor blockeras andra trådar i klassen som försöker använda den AppDomain .

Se även

Gäller för

StackTrace(Exception, Int32, Boolean)

Initierar en ny instans av klassen med hjälp av StackTrace det angivna undantagsobjektet, hoppar över det angivna antalet bildrutor och kan också samla in källinformation.

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)

Parametrar

e
Exception

Undantagsobjektet som stackspårningen ska konstrueras från.

skipFrames
Int32

Antalet ramar upp stacken som spårningen ska startas från.

fNeedFileInfo
Boolean

trueför att samla in filnamn, radnummer och kolumnnummer. annars . false

Undantag

Parametern e är null.

Parametern skipFrames är negativ.

Kommentarer

Den resulterande stackspårningen beskriver stacken vid tidpunkten för undantaget.

Om antalet bildrutor som ska hoppa över är större än eller lika med det totala antalet bildrutor i anropsstacken när instansen skapas, StackTrace innehåller den inga bildrutor.

Se även

Gäller för

StackTrace(Exception, Boolean)

Initierar en ny instans av klassen med hjälp av StackTrace det angivna undantagsobjektet och kan också samla in källinformation.

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)

Parametrar

exceptione
Exception

Undantagsobjektet som stackspårningen ska konstrueras från.

needFileInfofNeedFileInfo
Boolean

trueför att samla in filnamn, radnummer och kolumnnummer. annars . false

Undantag

Parametern e är null.

Kommentarer

Den resulterande stackspårningen beskriver stacken vid tidpunkten för undantaget.

Se även

Gäller för