StackTrace Costruttori
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Inizializza una nuova istanza della classe StackTrace.
Overload
| Nome | Descrizione |
|---|---|
| StackTrace() |
Inizializza una nuova istanza della StackTrace classe dal frame del chiamante. |
| StackTrace(Boolean) |
Inizializza una nuova istanza della StackTrace classe dal frame del chiamante, acquisendo facoltativamente le informazioni di origine. |
| StackTrace(StackFrame) |
Inizializza una nuova istanza della StackTrace classe che contiene un singolo frame. |
| StackTrace(Exception) |
Inizializza una nuova istanza della StackTrace classe utilizzando l'oggetto eccezione fornito. |
| StackTrace(Int32) |
Inizializza una nuova istanza della StackTrace classe dal frame del chiamante, ignorando il numero specificato di fotogrammi. |
| StackTrace(Exception, Int32) |
Inizializza una nuova istanza della StackTrace classe utilizzando l'oggetto eccezione fornito e ignorando il numero specificato di fotogrammi. |
| StackTrace(Int32, Boolean) |
Inizializza una nuova istanza della StackTrace classe dal frame del chiamante, ignorando il numero specificato di fotogrammi e acquisendo facoltativamente le informazioni di origine. |
| StackTrace(Thread, Boolean) |
Obsoleti.
Inizializza una nuova istanza della StackTrace classe per un thread specifico, acquisendo facoltativamente le informazioni di origine. Non usare questo overload del costruttore. |
| StackTrace(Exception, Int32, Boolean) |
Inizializza una nuova istanza della StackTrace classe utilizzando l'oggetto eccezione fornito, ignorando il numero specificato di fotogrammi e acquisendo facoltativamente le informazioni di origine. |
| StackTrace(Exception, Boolean) |
Inizializza una nuova istanza della StackTrace classe utilizzando l'oggetto eccezione fornito e, facoltativamente, l'acquisizione delle informazioni sull'origine. |
StackTrace()
Inizializza una nuova istanza della StackTrace classe dal frame del chiamante.
public:
StackTrace();
public StackTrace();
Public Sub New ()
Esempio
Nell'esempio di codice seguente vengono visualizzate le prime e le ultime chiamate di funzione in un'analisi dello stack.
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
Commenti
L'oggetto StackTrace viene creato con il thread corrente del chiamante e non contiene informazioni sul nome file, sul numero di riga o sulla colonna.
Usare questo costruttore senza parametri quando si desidera una traccia completa con solo informazioni sul metodo di riepilogo sullo stack di chiamate.
Si applica a
StackTrace(Boolean)
Inizializza una nuova istanza della StackTrace classe dal frame del chiamante, acquisendo facoltativamente le informazioni di origine.
public:
StackTrace(bool fNeedFileInfo);
public StackTrace(bool fNeedFileInfo);
new System.Diagnostics.StackTrace : bool -> System.Diagnostics.StackTrace
Public Sub New (fNeedFileInfo As Boolean)
Parametri
- fNeedFileInfo
- Boolean
true per acquisire il nome del file, il numero di riga e il numero di colonna; in caso contrario, false.
Esempio
Nell'esempio di codice seguente vengono illustrati vari StackTrace metodi del costruttore.
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
Commenti
Viene StackTrace creato con il thread corrente del chiamante.
Si applica a
StackTrace(StackFrame)
Inizializza una nuova istanza della StackTrace classe che contiene un singolo frame.
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)
Parametri
- frame
- StackFrame
Cornice che l'oggetto StackTrace deve contenere.
Esempio
L'esempio di codice seguente scrive le informazioni di analisi dello stack in una voce del registro eventi.
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)
Commenti
Usare questo costruttore quando non si vuole che il sovraccarico di un'analisi dello stack completa.
Vedi anche
Si applica a
StackTrace(Exception)
Inizializza una nuova istanza della StackTrace classe utilizzando l'oggetto eccezione fornito.
public:
StackTrace(Exception ^ e);
public StackTrace(Exception e);
new System.Diagnostics.StackTrace : Exception -> System.Diagnostics.StackTrace
Public Sub New (e As Exception)
Parametri
Oggetto eccezione da cui costruire l'analisi dello stack.
Eccezioni
Il parametro e è null.
Commenti
L'oggetto StackTrace viene creato con il thread corrente del chiamante e non contiene informazioni sul nome file, sul numero di riga o sulla colonna.
L'analisi dello stack risultante descrive lo stack al momento dell'eccezione.
Vedi anche
Si applica a
StackTrace(Int32)
Inizializza una nuova istanza della StackTrace classe dal frame del chiamante, ignorando il numero specificato di fotogrammi.
public:
StackTrace(int skipFrames);
public StackTrace(int skipFrames);
new System.Diagnostics.StackTrace : int -> System.Diagnostics.StackTrace
Public Sub New (skipFrames As Integer)
Parametri
- skipFrames
- Int32
Numero di fotogrammi verso l'alto dello stack da cui avviare la traccia.
Eccezioni
Il skipFrames parametro è negativo.
Commenti
L'oggetto StackTrace viene creato con il thread corrente del chiamante e non contiene informazioni sul nome file, sul numero di riga o sulla colonna.
Se il numero di fotogrammi da ignorare è maggiore o uguale al numero totale di fotogrammi nello stack di chiamate al momento della creazione dell'istanza, l'oggetto StackTrace non conterrà fotogrammi.
Si applica a
StackTrace(Exception, Int32)
Inizializza una nuova istanza della StackTrace classe utilizzando l'oggetto eccezione fornito e ignorando il numero specificato di fotogrammi.
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)
Parametri
Oggetto eccezione da cui costruire l'analisi dello stack.
- skipFrames
- Int32
Numero di fotogrammi verso l'alto dello stack da cui avviare la traccia.
Eccezioni
Il parametro e è null.
Il skipFrames parametro è negativo.
Commenti
L'oggetto StackTrace non contiene informazioni sul nome del file, sul numero di riga o sulla colonna.
L'analisi dello stack risultante descrive lo stack al momento dell'eccezione.
Se il numero di fotogrammi da ignorare è maggiore o uguale al numero totale di fotogrammi nello stack di chiamate al momento della creazione dell'istanza, l'oggetto StackTrace non conterrà fotogrammi.
Vedi anche
Si applica a
StackTrace(Int32, Boolean)
Inizializza una nuova istanza della StackTrace classe dal frame del chiamante, ignorando il numero specificato di fotogrammi e acquisendo facoltativamente le informazioni di origine.
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)
Parametri
- skipFrames
- Int32
Numero di fotogrammi verso l'alto dello stack da cui avviare la traccia.
- fNeedFileInfo
- Boolean
true per acquisire il nome del file, il numero di riga e il numero di colonna; in caso contrario, false.
Eccezioni
Il skipFrames parametro è negativo.
Esempio
Nell'esempio di codice seguente vengono illustrati vari StackTrace metodi del costruttore.
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
Commenti
Se il numero di fotogrammi da ignorare è maggiore o uguale al numero totale di fotogrammi nello stack di chiamate al momento della creazione dell'istanza, l'oggetto StackTrace non conterrà fotogrammi.
Si applica a
StackTrace(Thread, Boolean)
Attenzione
This constructor has been deprecated. Please use a constructor that does not require a Thread parameter. http://go.microsoft.com/fwlink/?linkid=14202
Inizializza una nuova istanza della StackTrace classe per un thread specifico, acquisendo facoltativamente le informazioni di origine.
Non usare questo overload del costruttore.
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)
Parametri
- targetThread
- Thread
Thread di cui è richiesta l'analisi dello stack.
- needFileInfo
- Boolean
true per acquisire il nome del file, il numero di riga e il numero di colonna; in caso contrario, false.
- Attributi
Eccezioni
Il thread targetThread non è sospeso.
Commenti
Importante
Non usare questo costruttore. È obsoleto e non esiste alcuna alternativa consigliata. Quando si sospende un thread, non è possibile sapere quale codice è in esecuzione e i deadlock possono verificarsi molto facilmente. Ad esempio, se si sospende un thread mentre contiene blocchi durante una valutazione delle autorizzazioni di sicurezza, altri thread in AppDomain potrebbero essere bloccati. Se si sospende un thread durante l'esecuzione di un costruttore di classe, vengono bloccati altri thread nel AppDomain tentativo di usare tale classe.
Vedi anche
Si applica a
StackTrace(Exception, Int32, Boolean)
Inizializza una nuova istanza della StackTrace classe utilizzando l'oggetto eccezione fornito, ignorando il numero specificato di fotogrammi e acquisendo facoltativamente le informazioni di origine.
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)
Parametri
Oggetto eccezione da cui costruire l'analisi dello stack.
- skipFrames
- Int32
Numero di fotogrammi verso l'alto dello stack da cui avviare la traccia.
- fNeedFileInfo
- Boolean
true per acquisire il nome del file, il numero di riga e il numero di colonna; in caso contrario, false.
Eccezioni
Il parametro e è null.
Il skipFrames parametro è negativo.
Commenti
L'analisi dello stack risultante descrive lo stack al momento dell'eccezione.
Se il numero di fotogrammi da ignorare è maggiore o uguale al numero totale di fotogrammi nello stack di chiamate al momento della creazione dell'istanza, l'oggetto StackTrace non conterrà fotogrammi.
Vedi anche
Si applica a
StackTrace(Exception, Boolean)
Inizializza una nuova istanza della StackTrace classe utilizzando l'oggetto eccezione fornito e, facoltativamente, l'acquisizione delle informazioni sull'origine.
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)
Parametri
- exceptione
- Exception
Oggetto eccezione da cui costruire l'analisi dello stack.
- needFileInfofNeedFileInfo
- Boolean
true per acquisire il nome del file, il numero di riga e il numero di colonna; in caso contrario, false.
Eccezioni
Il parametro e è null.
Commenti
L'analisi dello stack risultante descrive lo stack al momento dell'eccezione.