StackTrace Construtores

Definição

Inicializa uma nova instância da classe StackTrace.Initializes a new instance of the StackTrace class.

Sobrecargas

StackTrace()

Inicializa uma nova instância da classe StackTrace do quadro do chamador.Initializes a new instance of the StackTrace class from the caller's frame.

StackTrace(Boolean)

Inicializa uma nova instância da classe StackTrace do quadro do chamador, capturando originalmente as informações de origem.Initializes a new instance of the StackTrace class from the caller's frame, optionally capturing source information.

StackTrace(StackFrame)

Inicializa uma nova instância da classe StackTrace que contém um único quadro.Initializes a new instance of the StackTrace class that contains a single frame.

StackTrace(Exception)

Inicializa uma nova instância da classe StackTrace usando o objeto de exceção fornecido.Initializes a new instance of the StackTrace class using the provided exception object.

StackTrace(Int32)

Inicializa uma nova instância da classe StackTrace com base no quadro do chamador, ignorando o número de quadros especificado.Initializes a new instance of the StackTrace class from the caller's frame, skipping the specified number of frames.

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.Initializes a new instance of the StackTrace class using the provided exception object and skipping the specified number of frames.

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.Initializes a new instance of the StackTrace class from the caller's frame, skipping the specified number of frames and optionally capturing source information.

StackTrace(Thread, Boolean)

Inicializa uma nova instância da classe StackTrace para um thread específico, com a opção de capturar informações de origem.Initializes a new instance of the StackTrace class for a specific thread, optionally capturing source information.

Não usar essa sobrecarga de construtor.Do not use this constructor overload.

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.Initializes a new instance of the StackTrace class using the provided exception object, skipping the specified number of frames and optionally capturing source information.

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.Initializes a new instance of the StackTrace class, using the provided exception object and optionally capturing source information.

StackTrace()

Inicializa uma nova instância da classe StackTrace do quadro do chamador.Initializes a new instance of the StackTrace class from the caller's frame.

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

Exemplos

O exemplo de código a seguir exibe a primeira e a última chamadas de função em um rastreamento de pilha.The following code example displays the first and last function calls in a stack trace.

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 o nome do arquivo, o número da linha ou as informações da coluna.The StackTrace is created with the caller's current thread, and does not contain file name, line number, or column information.

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.Use this parameterless constructor when you want a complete trace with only summary method information about the call stack.

StackTrace(Boolean)

Inicializa uma nova instância da classe StackTrace do quadro do chamador, capturando originalmente as informações de origem.Initializes a new instance of the StackTrace class from the caller's frame, optionally capturing source information.

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.true to capture the file name, line number, and column number; otherwise, false.

Exemplos

O exemplo de código a seguir demonstra vários métodos de construtor de StackTrace.The following code example demonstrates various StackTrace constructor methods.

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.The StackTrace is created with the caller's current thread.

StackTrace(StackFrame)

Inicializa uma nova instância da classe StackTrace que contém um único quadro.Initializes a new instance of the StackTrace class that contains a single 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)

Parâmetros

frame
StackFrame

O quadro que o objeto StackTrace deve conter.The frame that the StackTrace object should contain.

Exemplos

O exemplo de código a seguir grava informações de rastreamento de pilha em uma entrada de log de eventos.The following code example writes stack trace information to an event log entry.

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.Use this constructor when you do not want the overhead of a full stack trace.

Veja também

StackTrace(Exception)

Inicializa uma nova instância da classe StackTrace usando o objeto de exceção fornecido.Initializes a new instance of the StackTrace class using the provided exception object.

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.The exception object from which to construct the stack trace.

Exceções

O parâmetro e é null.The parameter e is null.

Comentários

O StackTrace é criado com o thread atual do chamador e não contém o nome do arquivo, o número da linha ou as informações da coluna.The StackTrace is created with the caller's current thread, and does not contain file name, line number, or column information.

O rastreamento de pilha resultante descreve a pilha no momento da exceção.The resulting stack trace describes the stack at the time of the exception.

Veja também

StackTrace(Int32)

Inicializa uma nova instância da classe StackTrace com base no quadro do chamador, ignorando o número de quadros especificado.Initializes a new instance of the StackTrace class from the caller's frame, skipping the specified number of frames.

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 o rastreamento será iniciado.The number of frames up the stack from which to start the trace.

Exceções

O parâmetro skipFrames é negativo.The skipFrames parameter is negative.

Comentários

O StackTrace é criado com o thread atual do chamador e não contém o nome do arquivo, o número da linha ou as informações da coluna.The StackTrace is created with the caller's current thread, and does not contain file name, line number, or column information.

Se o número de quadros a serem ignorados 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á nenhum quadro.If the number of frames to skip is greater than or equal to the total number of frames on the call stack at the time the instance is created, the StackTrace will contain no frames.

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.Initializes a new instance of the StackTrace class using the provided exception object and skipping the specified number of frames.

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.The exception object from which to construct the stack trace.

skipFrames
Int32

O número de quadros na pilha do qual o rastreamento será iniciado.The number of frames up the stack from which to start the trace.

Exceções

O parâmetro e é null.The parameter e is null.

O parâmetro skipFrames é negativo.The skipFrames parameter is negative.

Comentários

O StackTrace não contém o nome do arquivo, o número da linha ou as informações da coluna.The StackTrace does not contain file name, line number, or column information.

O rastreamento de pilha resultante descreve a pilha no momento da exceção.The resulting stack trace describes the stack at the time of the exception.

Se o número de quadros a serem ignorados 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á nenhum quadro.If the number of frames to skip is greater than or equal to the total number of frames on the call stack at the time the instance is created, the StackTrace will contain no frames.

Veja também

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.Initializes a new instance of the StackTrace class from the caller's frame, skipping the specified number of frames and optionally capturing source information.

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 o rastreamento será iniciado.The number of frames up the stack from which to start the trace.

fNeedFileInfo
Boolean

true para capturar o nome de arquivo, o número de linha e o número de coluna; caso contrário, false.true to capture the file name, line number, and column number; otherwise, false.

Exceções

O parâmetro skipFrames é negativo.The skipFrames parameter is negative.

Exemplos

O exemplo de código a seguir demonstra vários métodos de construtor de StackTrace.The following code example demonstrates various StackTrace constructor methods.

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 ignorados 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á nenhum quadro.If the number of frames to skip is greater than or equal to the total number of frames on the call stack at the time the instance is created, the StackTrace will contain no frames.

StackTrace(Thread, Boolean)

Aviso

Esta API agora é obsoleta.

Inicializa uma nova instância da classe StackTrace para um thread específico, com a opção de capturar informações de origem.Initializes a new instance of the StackTrace class for a specific thread, optionally capturing source information.

Não usar essa sobrecarga de construtor.Do not use this constructor overload.

public:
 StackTrace(System::Threading::Thread ^ targetThread, bool needFileInfo);
[System.Obsolete]
[System.Obsolete("This constructor has been deprecated.  Please use a constructor that does not require a Thread parameter.  https://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
Public Sub New (targetThread As Thread, needFileInfo As Boolean)

Parâmetros

targetThread
Thread

O thread cujo rastreamento de pilha é solicitado.The thread whose stack trace is requested.

needFileInfo
Boolean

true para capturar o nome de arquivo, o número de linha e o número de coluna; caso contrário, false.true to capture the file name, line number, and column number; otherwise, false.

Atributos

Exceções

O thread targetThread não está suspenso.The thread targetThread is not suspended.

Comentários

Importante

Não use esse construtor.Do not use this constructor. Ele é obsoleto e não há uma alternativa recomendada.It is obsolete, and there is no recommended alternative. Ao suspender um thread, você não tem como saber qual código ele está executando e os deadlocks podem ocorrer muito facilmente.When you suspend a thread, you have no way of knowing what code it is executing, and deadlocks can occur very easily. Por exemplo, se você suspender um thread enquanto ele mantiver bloqueios durante uma avaliação de permissão de segurança, outros threads no AppDomain poderão ser bloqueados.For example, if you suspend a thread while it holds locks during a security permission evaluation, other threads in the AppDomain might be blocked. Se você suspender um thread enquanto ele estiver executando um construtor de classe, outros threads no AppDomain que tentarem usar essa classe serão bloqueados.If you suspend a thread while it is executing a class constructor, other threads in the AppDomain that attempt to use that class are blocked.

Veja também

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.Initializes a new instance of the StackTrace class using the provided exception object, skipping the specified number of frames and optionally capturing source information.

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.The exception object from which to construct the stack trace.

skipFrames
Int32

O número de quadros na pilha do qual o rastreamento será iniciado.The number of frames up the stack from which to start the trace.

fNeedFileInfo
Boolean

true para capturar o nome de arquivo, o número de linha e o número de coluna; caso contrário, false.true to capture the file name, line number, and column number; otherwise, false.

Exceções

O parâmetro e é null.The parameter e is null.

O parâmetro skipFrames é negativo.The skipFrames parameter is negative.

Comentários

O rastreamento de pilha resultante descreve a pilha no momento da exceção.The resulting stack trace describes the stack at the time of the exception.

Se o número de quadros a serem ignorados 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á nenhum quadro.If the number of frames to skip is greater than or equal to the total number of frames on the call stack at the time the instance is created, the StackTrace will contain no frames.

Veja também

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.Initializes a new instance of the StackTrace class, using the provided exception object and optionally capturing source information.

public:
 StackTrace(Exception ^ e, bool fNeedFileInfo);
public StackTrace (Exception e, bool fNeedFileInfo);
new System.Diagnostics.StackTrace : Exception * bool -> System.Diagnostics.StackTrace
Public Sub New (e As Exception, fNeedFileInfo As Boolean)

Parâmetros

exception
Exception

O objeto de exceção do qual o rastreamento de pilha será construído.The exception object from which to construct the stack trace.

needFileInfo
Boolean

true para capturar o nome de arquivo, o número de linha e o número de coluna; caso contrário, false.true to capture the file name, line number, and column number; otherwise, false.

Exceções

O parâmetro e é null.The parameter e is null.

Comentários

O rastreamento de pilha resultante descreve a pilha no momento da exceção.The resulting stack trace describes the stack at the time of the exception.

Veja também

Aplica-se a