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
Este tópico ainda não foi avaliado como - Avalie este tópico

Propriedade Exception.StackTrace

Obtém uma representação de cadeia de caracteres dos quadros imediatos na pilha de chamadas.

Namespace:  System
Assembly:  mscorlib (em mscorlib.dll)
public virtual string StackTrace { get; }

Valor de propriedade

Tipo: System.String
Uma cadeia de caracteres que descreve os quadros imediatos a pilha de chamadas.

Implementações

_Exception.StackTrace

A pilha de execução mantém registro dos métodos que estão em execução em um momento determinado. Um rastreamento de chamadas de método é chamado um rastreamento de pilha. A listagem de rastreamento de pilha fornece uma maneira de seguida a pilha de chamadas para a linha número no método na qual a exceção ocorre.

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

O common language runtime (CLR) atualiza o rastreamento de pilha sempre que uma exceção é lançada no código do aplicativo (usando a palavra-chave de throw ). Se a exceção foi rethrown em um método que seja diferente do que o método onde foi originalmente lançado, o rastreamento de pilha contém tanto o método no local onde a exceção lançada foi originalmente, e o local no método na qual a exceção foi rethrown. Se a exceção é lançada, e rethrown posterior, no mesmo método, o rastreamento de pilha contém somente o local onde a exceção foi rethrown e não inclui o local onde a exceção lançada foi originalmente.

A propriedade de StackTrace não pode relatar tantas chamadas de método conforme esperado devido às transformações de código, como inlining, que ocorrem durante a otimização.

Observações para herdeiros

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

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

O exemplo de código a seguir gera Exception e em seguida capturar-lo e exibe um rastreamento de pilha usando a propriedade de StackTrace .


// 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.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Biblioteca de Classes Portátil

Com suporte em: Biblioteca de Classes Portátil

.NET para aplicativos da Windows Store

Com suporte em: Windows 8

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

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.
Isso foi útil para você?
(1500 caracteres restantes)

Contribuições da comunidade

ADICIONAR
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
© 2013 Microsoft. Todos os direitos reservados.