StackTrace Constructeurs
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
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
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
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.