Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Exception.StackTrace, propriété

Obtient une représentation sous forme de chaîne des frames immédiates sur la pile des appels.

Espace de noms :  System
Assembly :  mscorlib (dans mscorlib.dll)

public virtual string StackTrace { get; }

Valeur de propriété

Type : System.String
Chaîne qui décrit les frames immédiates de la pile des appels.

Implémentations

_Exception.StackTrace

La pile d'exécution assure le suivi de toutes les méthodes qui sont en cours d'exécution à un moment donné. La trace des appels de méthodes s'appelle la trace de la pile. La liste de la trace de la pile permet de suivre la pile des appels au numéro de ligne dans la méthode où l'exception se produit.

La propriété StackTrace retourne les frames de la pile des appels qui proviennent de l'emplacement où l'exception a été levée. Vous pouvez obtenir les informations à propos des frames supplémentaires dans la pile des appels en créant une nouvelle instance de la classe System.Diagnostics.StackTrace et en utilisant sa méthode StackTrace.ToString.

CLR (Common Language Runtime) met à jour la trace de la pile chaque fois qu'une exception est levée dans le code d'application (en utilisant le mot clé throw). Si l'exception est levée à nouveau dans une méthode différente de celle où elle a été levée initialement, la trace de pile contient à la fois l'emplacement de la méthode où l'exception a été levée initialement et l'emplacement de la méthode où l'exception a été levée à nouveau. Si l'exception est levée, et levée ensuite à nouveau dans la même méthode, la trace de pile contient uniquement l'emplacement où l'exception a été levée à nouveau et n'inclut pas l'emplacement où l'exception a été levée initialement.

La propriété StackTrace peut ne pas signaler autant d'appels de méthode qu'attendu en raison des transformations de code, telles que les opérations d'inclusions, qui se produisent pendant l'optimisation.

Remarques à l'attention des héritiers

La propriété StackTrace est substituée dans les classes qui requièrent un contrôle du contenu ou du format de la trace de la pile.

Par défaut, la trace de la pile est capturée immédiatement avant qu'un objet exception ne soit levé. Utilisez Environment.StackTrace pour obtenir des informations de la trace de la pile quand aucune exception n'est levée.

L'exemple de code suivant lève un Exception puis l'intercepte et affiche une trace de pile à l'aide de la propriété 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

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Bibliothèque de classes portable

Pris en charge dans : Bibliothèque de classes portable

.NET pour les applications du Windows Store

Pris en charge dans : Windows 8

.NET pour les applications Windows Phone

Pris en charge dans : Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft