Partager via


StackTrace Constructeurs

Définition

Initialise une nouvelle instance de la classe StackTrace.

Surcharges

StackTrace()

Initialise une nouvelle instance de la classe StackTrace à partir du frame d'un appelant.

StackTrace(Boolean)

Initialise une nouvelle instance de la classe StackTrace à partir du frame d'un appelant, en capturant éventuellement les informations sur la source.

StackTrace(IEnumerable<StackFrame>)

Construit une trace de pile à partir d’un ensemble d’objets StackFrame .

StackTrace(StackFrame)

Initialise une nouvelle instance de la classe StackTrace qui contient un frame unique.

StackTrace(Exception)

Initialise une nouvelle instance de la classe StackTrace, à l'aide de l'objet exception fourni.

StackTrace(Int32)

Initialise une nouvelle instance de la classe StackTrace, à partir du frame d'un appelant, en ignorant le nombre spécifié de frames.

StackTrace(Exception, Int32)

Initialise une nouvelle instance de la classe StackTrace à l'aide de l'objet exception fourni et en ignorant le nombre spécifié de frames.

StackTrace(Int32, Boolean)

Initialise une nouvelle instance de la classe StackTrace à partir du frame d'un appelant, en ignorant le nombre spécifié de frames et en capturant éventuellement les informations sur la source.

StackTrace(Thread, Boolean)
Obsolète.

Initialise une nouvelle instance de la classe StackTrace pour un thread spécifique, en capturant éventuellement les informations sur la source.

N'utilisez pas cette surcharge de constructeur.

StackTrace(Exception, Int32, Boolean)

Initialise une nouvelle instance de la classe StackTrace, à l'aide de l'objet exception fourni, en ignorant le nombre spécifié de frames et en capturant éventuellement les informations sur la source.

StackTrace(Exception, Boolean)

Initialise une nouvelle instance de la classe StackTrace à l'aide de l'objet exception fourni, en capturant éventuellement les informations sur la source.

StackTrace()

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Initialise une nouvelle instance de la classe StackTrace à partir du frame d'un appelant.

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

Exemples

L’exemple de code suivant affiche les premier et dernier appels de fonction dans une trace de pile.

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

Remarques

Le StackTrace est créé avec le thread actuel de l’appelant et ne contient pas de nom de fichier, de numéro de ligne ou d’informations de colonne.

Utilisez ce constructeur sans paramètre lorsque vous souhaitez une trace complète avec uniquement des informations de méthode récapitulatives sur la pile des appels.

S’applique à

StackTrace(Boolean)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Initialise une nouvelle instance de la classe StackTrace à partir du frame d'un appelant, en capturant éventuellement les informations sur la source.

public:
 StackTrace(bool fNeedFileInfo);
public StackTrace (bool fNeedFileInfo);
new System.Diagnostics.StackTrace : bool -> System.Diagnostics.StackTrace
Public Sub New (fNeedFileInfo As Boolean)

Paramètres

fNeedFileInfo
Boolean

true pour capturer le nom de fichier, le numéro de ligne et le numéro de colonne ; sinon, false.

Exemples

L’exemple de code suivant illustre différentes StackTrace méthodes de constructeur.

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

Remarques

le StackTrace est créé avec le thread actuel de l’appelant.

S’applique à

StackTrace(IEnumerable<StackFrame>)

Source:
StackTrace.cs
Source:
StackTrace.cs

Construit une trace de pile à partir d’un ensemble d’objets StackFrame .

public:
 StackTrace(System::Collections::Generic::IEnumerable<System::Diagnostics::StackFrame ^> ^ frames);
public StackTrace (System.Collections.Generic.IEnumerable<System.Diagnostics.StackFrame> frames);
new System.Diagnostics.StackTrace : seq<System.Diagnostics.StackFrame> -> System.Diagnostics.StackTrace
Public Sub New (frames As IEnumerable(Of StackFrame))

Paramètres

frames
IEnumerable<StackFrame>

Ensemble de trames de pile qui doivent être présents dans la trace de pile.

S’applique à

StackTrace(StackFrame)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Initialise une nouvelle instance de la classe StackTrace qui contient un frame unique.

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)

Paramètres

frame
StackFrame

Frame que l'objet StackTrace doit contenir.

Exemples

L’exemple de code suivant écrit des informations de trace de pile dans une entrée de journal des événements.

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)

Remarques

Utilisez ce constructeur lorsque vous ne souhaitez pas la surcharge d’une trace de pile complète.

Voir aussi

S’applique à

StackTrace(Exception)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Initialise une nouvelle instance de la classe StackTrace, à l'aide de l'objet exception fourni.

public:
 StackTrace(Exception ^ e);
public StackTrace (Exception e);
new System.Diagnostics.StackTrace : Exception -> System.Diagnostics.StackTrace
Public Sub New (e As Exception)

Paramètres

e
Exception

Objet exception à partir duquel créer la trace de la pile.

Exceptions

Le paramètre e est null.

Remarques

Le StackTrace est créé avec le thread actuel de l’appelant et ne contient pas de nom de fichier, de numéro de ligne ou d’informations de colonne.

La trace de pile résultante décrit la pile au moment de l’exception.

Voir aussi

S’applique à

StackTrace(Int32)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Initialise une nouvelle instance de la classe StackTrace, à partir du frame d'un appelant, en ignorant le nombre spécifié de frames.

public:
 StackTrace(int skipFrames);
public StackTrace (int skipFrames);
new System.Diagnostics.StackTrace : int -> System.Diagnostics.StackTrace
Public Sub New (skipFrames As Integer)

Paramètres

skipFrames
Int32

Nombre de frames au sommet de la pile à partir de laquelle commencer la trace.

Exceptions

Le paramètre skipFrames est négatif.

Remarques

Le StackTrace est créé avec le thread actuel de l’appelant et ne contient pas de nom de fichier, de numéro de ligne ou d’informations de colonne.

Si le nombre d’images à ignorer est supérieur ou égal au nombre total d’images sur la pile des appels au moment de la création de l’instance, le StackTrace ne contient pas d’images.

S’applique à

StackTrace(Exception, Int32)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Initialise une nouvelle instance de la classe StackTrace à l'aide de l'objet exception fourni et en ignorant le nombre spécifié de 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)

Paramètres

e
Exception

Objet exception à partir duquel créer la trace de la pile.

skipFrames
Int32

Nombre de frames au sommet de la pile à partir de laquelle commencer la trace.

Exceptions

Le paramètre e est null.

Le paramètre skipFrames est négatif.

Remarques

Ne contient pas d’informations sur le nom de fichier, le numéro de ligne ou la StackTrace colonne.

La trace de pile résultante décrit la pile au moment de l’exception.

Si le nombre d’images à ignorer est supérieur ou égal au nombre total d’images sur la pile des appels au moment de la création de l’instance, le StackTrace ne contient pas d’images.

Voir aussi

S’applique à

StackTrace(Int32, Boolean)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Initialise une nouvelle instance de la classe StackTrace à partir du frame d'un appelant, en ignorant le nombre spécifié de frames et en capturant éventuellement les informations sur la source.

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)

Paramètres

skipFrames
Int32

Nombre de frames au sommet de la pile à partir de laquelle commencer la trace.

fNeedFileInfo
Boolean

true pour capturer le nom de fichier, le numéro de ligne et le numéro de colonne ; sinon, false.

Exceptions

Le paramètre skipFrames est négatif.

Exemples

L’exemple de code suivant illustre différentes StackTrace méthodes de constructeur.

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

Remarques

Si le nombre d’images à ignorer est supérieur ou égal au nombre total d’images sur la pile des appels au moment de la création de l’instance, le StackTrace ne contient pas d’images.

S’applique à

StackTrace(Thread, Boolean)

Attention

This constructor has been deprecated. Please use a constructor that does not require a Thread parameter. http://go.microsoft.com/fwlink/?linkid=14202

Initialise une nouvelle instance de la classe StackTrace pour un thread spécifique, en capturant éventuellement les informations sur la source.

N'utilisez pas cette surcharge de constructeur.

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)

Paramètres

targetThread
Thread

Thread dont la trace de la pile est demandée.

needFileInfo
Boolean

true pour capturer le nom de fichier, le numéro de ligne et le numéro de colonne ; sinon, false.

Attributs

Exceptions

Le thread targetThread n'est pas interrompu.

Remarques

Important

N'utilisez pas ce constructeur. Il est obsolète et il n’existe aucune alternative recommandée. Lorsque vous suspendez un thread, vous n’avez aucun moyen de savoir quel code il exécute, et des interblocages peuvent se produire très facilement. Par exemple, si vous suspendez un thread pendant qu’il contient des verrous lors d’une évaluation d’autorisation de sécurité, d’autres threads du AppDomain peuvent être bloqués. Si vous suspendez un thread pendant qu’il exécute un constructeur de classe, les autres threads du AppDomain qui tentent d’utiliser cette classe sont bloqués.

Voir aussi

S’applique à

StackTrace(Exception, Int32, Boolean)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Initialise une nouvelle instance de la classe StackTrace, à l'aide de l'objet exception fourni, en ignorant le nombre spécifié de frames et en capturant éventuellement les informations sur la source.

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)

Paramètres

e
Exception

Objet exception à partir duquel créer la trace de la pile.

skipFrames
Int32

Nombre de frames au sommet de la pile à partir de laquelle commencer la trace.

fNeedFileInfo
Boolean

true pour capturer le nom de fichier, le numéro de ligne et le numéro de colonne ; sinon, false.

Exceptions

Le paramètre e est null.

Le paramètre skipFrames est négatif.

Remarques

La trace de pile résultante décrit la pile au moment de l’exception.

Si le nombre d’images à ignorer est supérieur ou égal au nombre total d’images sur la pile des appels au moment de la création de l’instance, le StackTrace ne contient pas d’images.

Voir aussi

S’applique à

StackTrace(Exception, Boolean)

Source:
StackTrace.cs
Source:
StackTrace.cs
Source:
StackTrace.cs

Initialise une nouvelle instance de la classe StackTrace à l'aide de l'objet exception fourni, en capturant éventuellement les informations sur la source.

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)

Paramètres

exceptione
Exception

Objet exception à partir duquel créer la trace de la pile.

needFileInfofNeedFileInfo
Boolean

true pour capturer le nom de fichier, le numéro de ligne et le numéro de colonne ; sinon, false.

Exceptions

Le paramètre e est null.

Remarques

La trace de pile résultante décrit la pile au moment de l’exception.

Voir aussi

S’applique à