Partilhar via


StackTrace Construtores

Definição

Inicializa uma nova instância da classe StackTrace.

Sobrecargas

StackTrace()

Inicializa uma nova instância da classe StackTrace do quadro do chamador.

StackTrace(Boolean)

Inicializa uma nova instância da classe StackTrace do quadro do chamador, capturando originalmente as informações de origem.

StackTrace(IEnumerable<StackFrame>)

Constrói um rastreamento de pilha de um conjunto de StackFrame objetos.

StackTrace(StackFrame)

Inicializa uma nova instância da classe StackTrace que contém um único quadro.

StackTrace(Exception)

Inicializa uma nova instância da classe StackTrace usando o objeto de exceção fornecido.

StackTrace(Int32)

Inicializa uma nova instância da classe StackTrace com base no quadro do chamador, ignorando o número de quadros especificado.

StackTrace(Exception, Int32)

Inicializa uma nova instância da classe StackTrace, usando o objeto de exceção fornecido e ignorando o número especificado de quadros.

StackTrace(Int32, Boolean)

Inicializa uma nova instância da classe StackTrace com base no quadro do chamador, ignorando o número especificado de quadros e, opcionalmente, capturando informações de origem.

StackTrace(Thread, Boolean)
Obsoleto.

Inicializa uma nova instância da classe StackTrace para um thread específico, com a opção de capturar informações de origem.

Não usar essa sobrecarga de construtor.

StackTrace(Exception, Int32, Boolean)

Inicializa uma nova instância da classe StackTrace usando o objeto de exceção fornecido, ignorando o número especificado de quadros e, opcionalmente, capturando informações de origem.

StackTrace(Exception, Boolean)

Inicializa uma nova instância da classe StackTrace, usando o objeto de exceção fornecido e, opcionalmente, capturando as informações de origem.

StackTrace()

Origem:
StackTrace.cs
Origem:
StackTrace.cs
Origem:
StackTrace.cs

Inicializa uma nova instância da classe StackTrace do quadro do chamador.

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

Exemplos

O exemplo de código a seguir exibe as primeira e a última chamadas de função em um rastreamento de pilha.

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

Comentários

O StackTrace é criado com o thread atual do chamador e não contém informações de nome de arquivo, número de linha ou coluna.

Use esse construtor sem parâmetros quando desejar um rastreamento completo com apenas informações de método de resumo sobre a pilha de chamadas.

Aplica-se a

StackTrace(Boolean)

Origem:
StackTrace.cs
Origem:
StackTrace.cs
Origem:
StackTrace.cs

Inicializa uma nova instância da classe StackTrace do quadro do chamador, capturando originalmente as informações de origem.

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

Parâmetros

fNeedFileInfo
Boolean

true para capturar o nome de arquivo, o número de linha e o número de coluna; caso contrário, false.

Exemplos

O exemplo de código a seguir demonstra vários StackTrace métodos de construtor.

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

Comentários

O StackTrace é criado com o thread atual do chamador.

Aplica-se a

StackTrace(IEnumerable<StackFrame>)

Origem:
StackTrace.cs
Origem:
StackTrace.cs

Constrói um rastreamento de pilha de um conjunto de StackFrame objetos.

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

Parâmetros

frames
IEnumerable<StackFrame>

O conjunto de quadros de pilha que devem estar presentes no rastreamento de pilha.

Aplica-se a

StackTrace(StackFrame)

Origem:
StackTrace.cs
Origem:
StackTrace.cs
Origem:
StackTrace.cs

Inicializa uma nova instância da classe StackTrace que contém um único quadro.

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)

Parâmetros

frame
StackFrame

O quadro que o objeto StackTrace deve conter.

Exemplos

O exemplo de código a seguir grava informações de rastreamento de pilha em uma entrada de log de eventos.

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)

Comentários

Use esse construtor quando não quiser a sobrecarga de um rastreamento de pilha completo.

Confira também

Aplica-se a

StackTrace(Exception)

Origem:
StackTrace.cs
Origem:
StackTrace.cs
Origem:
StackTrace.cs

Inicializa uma nova instância da classe StackTrace usando o objeto de exceção fornecido.

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

Parâmetros

e
Exception

O objeto de exceção do qual o rastreamento de pilha será construído.

Exceções

O parâmetro e é null.

Comentários

O StackTrace é criado com o thread atual do chamador e não contém informações de nome de arquivo, número de linha ou coluna.

O rastreamento de pilha resultante descreve a pilha no momento da exceção.

Confira também

Aplica-se a

StackTrace(Int32)

Origem:
StackTrace.cs
Origem:
StackTrace.cs
Origem:
StackTrace.cs

Inicializa uma nova instância da classe StackTrace com base no quadro do chamador, ignorando o número de quadros especificado.

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

Parâmetros

skipFrames
Int32

O número de quadros na pilha do qual iniciar o rastreamento.

Exceções

O parâmetro skipFrames é negativo.

Comentários

O StackTrace é criado com o thread atual do chamador e não contém informações de nome de arquivo, número de linha ou coluna.

Se o número de quadros a serem ignoradas for maior ou igual ao número total de quadros na pilha de chamadas no momento em que a instância for criada, o StackTrace não conterá quadros.

Aplica-se a

StackTrace(Exception, Int32)

Origem:
StackTrace.cs
Origem:
StackTrace.cs
Origem:
StackTrace.cs

Inicializa uma nova instância da classe StackTrace, usando o objeto de exceção fornecido e ignorando o número especificado de quadros.

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)

Parâmetros

e
Exception

O objeto de exceção do qual o rastreamento de pilha será construído.

skipFrames
Int32

O número de quadros na pilha do qual iniciar o rastreamento.

Exceções

O parâmetro e é null.

O parâmetro skipFrames é negativo.

Comentários

O StackTrace não contém informações de nome de arquivo, número de linha ou coluna.

O rastreamento de pilha resultante descreve a pilha no momento da exceção.

Se o número de quadros a serem ignoradas for maior ou igual ao número total de quadros na pilha de chamadas no momento em que a instância for criada, o StackTrace não conterá quadros.

Confira também

Aplica-se a

StackTrace(Int32, Boolean)

Origem:
StackTrace.cs
Origem:
StackTrace.cs
Origem:
StackTrace.cs

Inicializa uma nova instância da classe StackTrace com base no quadro do chamador, ignorando o número especificado de quadros e, opcionalmente, capturando informações de origem.

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)

Parâmetros

skipFrames
Int32

O número de quadros na pilha do qual iniciar o rastreamento.

fNeedFileInfo
Boolean

true para capturar o nome de arquivo, o número de linha e o número de coluna; caso contrário, false.

Exceções

O parâmetro skipFrames é negativo.

Exemplos

O exemplo de código a seguir demonstra vários StackTrace métodos de construtor.

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

Comentários

Se o número de quadros a serem ignoradas for maior ou igual ao número total de quadros na pilha de chamadas no momento em que a instância for criada, o StackTrace não conterá quadros.

Aplica-se a

StackTrace(Thread, Boolean)

Cuidado

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

Inicializa uma nova instância da classe StackTrace para um thread específico, com a opção de capturar informações de origem.

Não usar essa sobrecarga de construtor.

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)

Parâmetros

targetThread
Thread

O thread cujo rastreamento de pilha é solicitado.

needFileInfo
Boolean

true para capturar o nome de arquivo, o número de linha e o número de coluna; caso contrário, false.

Atributos

Exceções

O thread targetThread não está suspenso.

Comentários

Importante

Não use esse construtor. Ele é obsoleto e não há nenhuma alternativa recomendada. Quando você suspende um thread, não tem como saber qual código ele está executando e os deadlocks podem ocorrer facilmente. Por exemplo, se você suspender um thread enquanto ele mantém bloqueios durante uma avaliação de permissão de segurança, outros threads no AppDomain poderão ser bloqueados. Se você suspender um thread enquanto ele estiver executando um construtor de classe, outros threads na AppDomain tentativa de usar essa classe serão bloqueados.

Confira também

Aplica-se a

StackTrace(Exception, Int32, Boolean)

Origem:
StackTrace.cs
Origem:
StackTrace.cs
Origem:
StackTrace.cs

Inicializa uma nova instância da classe StackTrace usando o objeto de exceção fornecido, ignorando o número especificado de quadros e, opcionalmente, capturando informações de origem.

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)

Parâmetros

e
Exception

O objeto de exceção do qual o rastreamento de pilha será construído.

skipFrames
Int32

O número de quadros na pilha do qual iniciar o rastreamento.

fNeedFileInfo
Boolean

true para capturar o nome de arquivo, o número de linha e o número de coluna; caso contrário, false.

Exceções

O parâmetro e é null.

O parâmetro skipFrames é negativo.

Comentários

O rastreamento de pilha resultante descreve a pilha no momento da exceção.

Se o número de quadros a serem ignoradas for maior ou igual ao número total de quadros na pilha de chamadas no momento em que a instância for criada, o StackTrace não conterá quadros.

Confira também

Aplica-se a

StackTrace(Exception, Boolean)

Origem:
StackTrace.cs
Origem:
StackTrace.cs
Origem:
StackTrace.cs

Inicializa uma nova instância da classe StackTrace, usando o objeto de exceção fornecido e, opcionalmente, capturando as informações de origem.

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)

Parâmetros

exceptione
Exception

O objeto de exceção do qual o rastreamento de pilha será construído.

needFileInfofNeedFileInfo
Boolean

true para capturar o nome de arquivo, o número de linha e o número de coluna; caso contrário, false.

Exceções

O parâmetro e é null.

Comentários

O rastreamento de pilha resultante descreve a pilha no momento da exceção.

Confira também

Aplica-se a