StackTrace Costruttori

Definizione

Inizializza una nuova istanza della classe StackTrace.

Overload

StackTrace()

Inizializza una nuova istanza della classe StackTrace dal frame del chiamante.

StackTrace(Boolean)

Inizializza una nuova istanza della classe StackTrace dal frame del chiamante, acquisendo facoltativamente informazioni sull'origine.

StackTrace(IEnumerable<StackFrame>)

Costruisce una traccia dello stack da un set di StackFrame oggetti.

StackTrace(StackFrame)

Consente di inizializzare una nuova istanza della classe StackTrace che contiene un solo frame.

StackTrace(Exception)

Inizializza una nuova istanza della classe StackTrace utilizzando l'oggetto eccezione fornito.

StackTrace(Int32)

Inizializza una nuova istanza della classe StackTrace dal frame del chiamante, ignorando il numero di frame specificato.

StackTrace(Exception, Int32)

Inizializza una nuova istanza della classe StackTrace utilizzando l'oggetto eccezione fornito e ignorando il numero di frame specificato.

StackTrace(Int32, Boolean)

Inizializza una nuova istanza della classe StackTrace dal frame del chiamante, ignorando il numero di frame specificato ed eventualmente acquisendo le informazioni sull'origine.

StackTrace(Thread, Boolean)
Obsoleti.

Inizializza una nuova istanza della classe StackTrace per un thread specifico, acquisendo facoltativamente informazioni sull'origine.

Non utilizzare questo overload del costruttore.

StackTrace(Exception, Int32, Boolean)

Inizializza una nuova istanza della classe StackTrace utilizzando l'oggetto eccezione fornito, ignorando il numero di frame specificato ed eventualmente acquisendo le informazioni sull'origine.

StackTrace(Exception, Boolean)

Inizializza una nuova istanza della classe StackTrace, utilizzando l'oggetto eccezione fornito e facoltativamente acquisendo informazioni sull'origine.

StackTrace()

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Inizializza una nuova istanza della classe StackTrace dal frame del chiamante.

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

Esempio

Nell'esempio di codice seguente vengono visualizzate le chiamate di prima e ultima funzione in una traccia dello stack.

void Level5Method()
{
   try
   {
      ClassLevel6^ nestedClass = gcnew ClassLevel6;
      nestedClass->Level6Method();
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( " Level5Method exception handler" );
      StackTrace^ st = gcnew 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 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 del file, sul numero di riga o sulla colonna.

Usare questo costruttore senza parametri quando si vuole una traccia completa con solo informazioni sul metodo di riepilogo sullo stack di chiamate.

Si applica a

StackTrace(Boolean)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Inizializza una nuova istanza della classe StackTrace dal frame del chiamante, acquisendo facoltativamente informazioni sull'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 nome file, numero di riga e numero di colonna; in caso contrario false.

Esempio

L'esempio di codice seguente illustra vari StackTrace metodi del costruttore.

void Level2Method()
{
   try
   {
      ClassLevel3^ nestedClass = gcnew ClassLevel3;
      nestedClass->Level3Method();
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( " Level2Method exception handler" );
      
      // Display the full call stack at this level.
      StackTrace^ st1 = gcnew 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 = gcnew StackTrace( gcnew 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 = gcnew 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 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(IEnumerable<StackFrame>)

Source:
StackTrace.cs
Source:
StackTrace.cs

Costruisce una traccia dello stack da un set di StackFrame oggetti.

public:
 StackTrace(System::Collections::Generic::IEnumerable<System::Diagnostics::StackFrame ^> ^ frames);
public StackTrace (System.Collections.Generic.IEnumerable<System.Diagnostics.StackFrame> frames);
new System.Diagnostics.StackTrace : seq<System.Diagnostics.StackFrame> -> System.Diagnostics.StackTrace
Public Sub New (frames As IEnumerable(Of StackFrame))

Parametri

frames
IEnumerable<StackFrame>

Set di frame dello stack che devono essere presenti nella traccia dello stack.

Si applica a

StackTrace(StackFrame)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Consente di inizializzare una nuova istanza della classe StackTrace che contiene un solo 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

Frame che l'oggetto StackTrace deve contenere.

Esempio

L'esempio di codice seguente scrive le informazioni di traccia dello stack in una voce del registro eventi.

StackFrame^ fr = gcnew StackFrame( 1,true );
StackTrace^ st = gcnew StackTrace( fr );
EventLog::WriteEntry( fr->GetMethod()->Name, st->ToString(), EventLogEntryType::Warning );
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 una traccia dello stack completo.

Vedi anche

Si applica a

StackTrace(Exception)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Inizializza una nuova istanza della classe StackTrace 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

e
Exception

Oggetto eccezione dal quale creare 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 del file, sul numero di riga o sulla colonna.

La traccia dello stack risultante descrive lo stack al momento dell'eccezione.

Vedi anche

Si applica a

StackTrace(Int32)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Inizializza una nuova istanza della classe StackTrace dal frame del chiamante, ignorando il numero di frame specificato.

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 frame dello stack da cui iniziare la traccia.

Eccezioni

Il parametro skipFrames è negativo.

Commenti

L'oggetto StackTrace viene creato con il thread corrente del chiamante e non contiene informazioni sul nome del 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)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Inizializza una nuova istanza della classe StackTrace utilizzando l'oggetto eccezione fornito e ignorando il numero di frame specificato.

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

e
Exception

Oggetto eccezione dal quale creare l'analisi dello stack.

skipFrames
Int32

Numero di frame dello stack da cui iniziare la traccia.

Eccezioni

Il parametro e è null.

Il parametro skipFrames è negativo.

Commenti

L'oggetto StackTrace non contiene il nome del file, il numero di riga o le informazioni sulla colonna.

La traccia 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)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Inizializza una nuova istanza della classe StackTrace dal frame del chiamante, ignorando il numero di frame specificato ed eventualmente acquisendo le informazioni sull'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 frame dello stack da cui iniziare la traccia.

fNeedFileInfo
Boolean

true per acquisire nome file, numero di riga e numero di colonna; in caso contrario false.

Eccezioni

Il parametro skipFrames è negativo.

Esempio

L'esempio di codice seguente illustra vari StackTrace metodi del costruttore.

void Level2Method()
{
   try
   {
      ClassLevel3^ nestedClass = gcnew ClassLevel3;
      nestedClass->Level3Method();
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( " Level2Method exception handler" );
      
      // Display the full call stack at this level.
      StackTrace^ st1 = gcnew 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 = gcnew StackTrace( gcnew 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 = gcnew 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 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 classe StackTrace per un thread specifico, acquisendo facoltativamente informazioni sull'origine.

Non utilizzare 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 la cui analisi dello stack è richiesta.

needFileInfo
Boolean

true per acquisire nome file, numero di riga e 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 il codice che sta eseguendo e i deadlock sono un'eventualità frequente. Se si sospende ad esempio un thread mentre contiene dei blocchi durante una valutazione delle autorizzazioni di sicurezza, potrebbero venire bloccati altri thread in AppDomain. Se si sospende un thread durante l'esecuzione di un costruttore di classi, altri thread nel AppDomain tentativo di usare tale classe vengono bloccati.

Vedi anche

Si applica a

StackTrace(Exception, Int32, Boolean)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Inizializza una nuova istanza della classe StackTrace utilizzando l'oggetto eccezione fornito, ignorando il numero di frame specificato ed eventualmente acquisendo le informazioni sull'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

e
Exception

Oggetto eccezione dal quale creare l'analisi dello stack.

skipFrames
Int32

Numero di frame dello stack da cui iniziare la traccia.

fNeedFileInfo
Boolean

true per acquisire nome file, numero di riga e numero di colonna; in caso contrario false.

Eccezioni

Il parametro e è null.

Il parametro skipFrames è negativo.

Commenti

La traccia 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)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Inizializza una nuova istanza della classe StackTrace, utilizzando l'oggetto eccezione fornito e facoltativamente acquisendo 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 dal quale creare l'analisi dello stack.

needFileInfofNeedFileInfo
Boolean

true per acquisire nome file, numero di riga e numero di colonna; in caso contrario false.

Eccezioni

Il parametro e è null.

Commenti

La traccia dello stack risultante descrive lo stack al momento dell'eccezione.

Vedi anche

Si applica a