StackTrace Konstruktorer
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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
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
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
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.