Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Propriedade Exception.StackTrace

Obtém uma representação de seqüência de caracteres dos quadros imediatas na pilha de chamadas.

Namespace:  System
Assembly:  mscorlib (em mscorlib.dll)

public virtual string StackTrace { get; }

Valor de propriedade

Tipo: System.String
Uma seqüência de caracteres que descreve os quadros imediatos da pilha de chamadas.

Implementações

_Exception.StackTrace

A pilha de execução mantém registro de todos os métodos que estão em execução em um dado momento. Um rastreamento de chamadas de método recebe o nome de rastreamento de pilha. A listagem de rastreamento de pilha fornece uma maneira para seguir a pilha de chamadas para o número de linhas no método onde a exceção ocorrer.

O StackTrace propriedade retorna os quadros da pilha de chamadas originadas no local onde a exceção foi lançada. Você pode obter informações sobre os quadros adicionais na pilha de chamadas, criando uma nova instância da System.Diagnostics.StackTrace classe e usando suas StackTrace.ToString método.

O common language runtime (CLR) atualiza o rastreamento de pilha, sempre que uma exceção é lançada no código do aplicativo (usando o throw palavra-chave). Se a exceção foi emitida novamente em um método que é diferente do que o método de onde foi lançada originalmente, o rastreamento de pilha contém o local no método onde a exceção foi originalmente lançada e o local no método onde a exceção foi relançada. Se a exceção for lançada e emitida novamente mais tarde, no mesmo método, o rastreamento de pilha contém apenas o local onde a exceção foi relançada e não inclui o local onde a exceção foi originalmente lançada.

O StackTrace propriedade pode não reportar chamadas de método quanto o esperado devido a transformações de código, como inlining, que ocorrem durante a otimização.

Observações para herdeiros

O StackTrace propriedade é substituída nas classes que exigem o controle sobre o conteúdo de rastreamento de pilha ou formato.

Por padrão, o rastreamento de pilha é capturado imediatamente antes de um objeto de exceção é lançado. Use Environment.StackTrace Para obter informações de rastreamento de pilha quando nenhuma exceção está sendo lançada.

O seguinte código exemplo lança uma Exception e detecta e exibe um rastreamento de pilha usando o StackTrace propriedade.


// Example for the Exception.HelpLink, Exception.Source,
// Exception.StackTrace, and Exception.TargetSite properties.
using System;

namespace NDP_UE_CS
{
    // Derive an exception; the constructor sets the HelpLink and 
    // Source properties.
    class LogTableOverflowException : Exception
    {
        const string overflowMessage = "The log table has overflowed.";

        public LogTableOverflowException( 
            string auxMessage, Exception inner ) :
                base( String.Format( "{0} - {1}", 
                    overflowMessage, auxMessage ), inner )
        {
            this.HelpLink = "http://msdn.microsoft.com";
            this.Source = "Exception_Class_Samples";
        }
    }

    class LogTable
    {
        public LogTable( int numElements )
        {
            logArea = new string[ numElements ];
            elemInUse = 0;
        }

        protected string[ ] logArea;
        protected int       elemInUse;

        // The AddRecord method throws a derived exception if 
        // the array bounds exception is caught.
        public    int       AddRecord( string newRecord )
        {
            try
            {
                logArea[ elemInUse ] = newRecord;
                return elemInUse++;
            }
            catch( Exception e )
            {
                throw new LogTableOverflowException( 
                    String.Format( "Record \"{0}\" was not logged.", 
                        newRecord ), e );
            }
        }
    }

    class OverflowDemo 
    {
        // Create a log table and force an overflow.
        public static void Main() 
        {
            LogTable log = new LogTable( 4 );

            Console.WriteLine( 
                "This example of \n   Exception.Message, \n" +
                "   Exception.HelpLink, \n   Exception.Source, \n" +
                "   Exception.StackTrace, and \n   Exception." +
                "TargetSite \ngenerates the following output." );

            try
            {
                for( int count = 1; ; count++ )
                {
                    log.AddRecord( 
                        String.Format( 
                            "Log record number {0}", count ) );
                }
            }
            catch( Exception ex )
            {
                Console.WriteLine( "\nMessage ---\n{0}", ex.Message );
                Console.WriteLine( 
                    "\nHelpLink ---\n{0}", ex.HelpLink );
                Console.WriteLine( "\nSource ---\n{0}", ex.Source );
                Console.WriteLine( 
                    "\nStackTrace ---\n{0}", ex.StackTrace );
                Console.WriteLine( 
                    "\nTargetSite ---\n{0}", ex.TargetSite );
            }
        }
    }
}

/*
This example of
   Exception.Message,
   Exception.HelpLink,
   Exception.Source,
   Exception.StackTrace, and
   Exception.TargetSite
generates the following output.

Message ---
The log table has overflowed. - Record "Log record number 5" was not logged.

HelpLink ---
http://msdn.microsoft.com

Source ---
Exception_Class_Samples

StackTrace ---
   at NDP_UE_CS.LogTable.AddRecord(String newRecord)
   at NDP_UE_CS.OverflowDemo.Main()

TargetSite ---
Int32 AddRecord(System.String)
*/


.NET Framework

Com suporte em: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core não compatível), Windows Server 2008 R2 (Server Core não compatível com SP1 ou posterior), Windows Server 2003 SP2

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos de sistema do .NET Framework.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft