StackTrace Construtores
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Inicializa uma nova instância da classe StackTrace.
Sobrecargas
| Nome | Description |
|---|---|
| StackTrace() |
Inicializa uma nova instância da classe do StackTrace quadro do chamador. |
| StackTrace(Boolean) |
Inicializa uma nova instância da classe do StackTrace quadro do chamador, opcionalmente capturando informações de origem. |
| StackTrace(StackFrame) |
Inicializa uma nova instância da StackTrace classe que contém um único quadro. |
| StackTrace(Exception) |
Inicializa uma nova instância da StackTrace classe usando o objeto de exceção fornecido. |
| StackTrace(Int32) |
Inicializa uma nova instância da classe do StackTrace quadro do chamador, ignorando o número especificado de quadros. |
| StackTrace(Exception, Int32) |
Inicializa uma nova instância da StackTrace classe 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 do StackTrace 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 StackTrace classe para um thread específico, opcionalmente capturando informações de origem. Não use essa sobrecarga de construtor. |
| StackTrace(Exception, Int32, Boolean) |
Inicializa uma nova instância da StackTrace classe 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 StackTrace classe, usando o objeto de exceção fornecido e, opcionalmente, capturando informações de origem. |
StackTrace()
Inicializa uma nova instância da classe do StackTrace quadro do chamador.
public:
StackTrace();
public StackTrace();
Public Sub New ()
Exemplos
O exemplo de código a seguir exibe as primeiras e últimas chamadas de função em um rastreamento de pilha.
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
Ele 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 quiser um rastreamento completo com apenas informações de método de resumo sobre a pilha de chamadas.
Aplica-se a
StackTrace(Boolean)
Inicializa uma nova instância da classe do StackTrace quadro do chamador, opcionalmente capturando 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 do arquivo, o número de linha e o número da coluna; caso contrário, false.
Exemplos
O exemplo de código a seguir demonstra vários StackTrace métodos de construtor.
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
Ele StackTrace é criado com o thread atual do chamador.
Aplica-se a
StackTrace(StackFrame)
Inicializa uma nova instância da StackTrace classe 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 StackTrace objeto 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 = 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 este construtor quando você não quiser a sobrecarga de um rastreamento de pilha completo.
Confira também
Aplica-se a
StackTrace(Exception)
Inicializa uma nova instância da StackTrace classe 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
O objeto de exceção do qual construir o rastreamento de pilha.
Exceções
O parâmetro e é null.
Comentários
Ele 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)
Inicializa uma nova instância da classe do StackTrace quadro do chamador, ignorando o número especificado de quadros.
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 até a pilha da qual iniciar o rastreamento.
Exceções
O skipFrames parâmetro é negativo.
Comentários
Ele 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, ela StackTrace não conterá quadros.
Aplica-se a
StackTrace(Exception, Int32)
Inicializa uma nova instância da StackTrace classe 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
O objeto de exceção do qual construir o rastreamento de pilha.
- skipFrames
- Int32
O número de quadros até a pilha da qual iniciar o rastreamento.
Exceções
O parâmetro e é null.
O skipFrames parâmetro é negativo.
Comentários
Não StackTrace 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, ela StackTrace não conterá quadros.
Confira também
Aplica-se a
StackTrace(Int32, Boolean)
Inicializa uma nova instância da classe do StackTrace 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 até a pilha da qual iniciar o rastreamento.
- fNeedFileInfo
- Boolean
true para capturar o nome do arquivo, o número de linha e o número da coluna; caso contrário, false.
Exceções
O skipFrames parâmetro é negativo.
Exemplos
O exemplo de código a seguir demonstra vários StackTrace métodos de construtor.
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, ela 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 StackTrace classe para um thread específico, opcionalmente capturando informações de origem.
Não use 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 do arquivo, o número de linha e o número da coluna; caso contrário, false.
- Atributos
Exceções
O thread targetThread não está suspenso.
Comentários
Importante
Não use este 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á em execução 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 AppDomain nessa tentativa de usar essa classe serão bloqueados.
Confira também
Aplica-se a
StackTrace(Exception, Int32, Boolean)
Inicializa uma nova instância da StackTrace classe 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
O objeto de exceção do qual construir o rastreamento de pilha.
- skipFrames
- Int32
O número de quadros até a pilha da qual iniciar o rastreamento.
- fNeedFileInfo
- Boolean
true para capturar o nome do arquivo, o número de linha e o número da coluna; caso contrário, false.
Exceções
O parâmetro e é null.
O skipFrames parâmetro é 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, ela StackTrace não conterá quadros.
Confira também
Aplica-se a
StackTrace(Exception, Boolean)
Inicializa uma nova instância da StackTrace classe, usando o objeto de exceção fornecido e, opcionalmente, capturando 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 construir o rastreamento de pilha.
- needFileInfofNeedFileInfo
- Boolean
true para capturar o nome do arquivo, o número de linha e o número da 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.