StackTrace Constructor (System.Diagnostics)

Switch View :
ScriptFree
.NET Framework Class Library
StackTrace Constructor

Initializes a new instance of the StackTrace class from the caller's frame.

Namespace:  System.Diagnostics
Assembly:  mscorlib (in mscorlib.dll)
Syntax

Visual Basic
Public Sub New
C#
public StackTrace()
Visual C++
public:
StackTrace()
F#
new : unit -> StackTrace
Remarks

The StackTrace is created with the caller's current thread, and does not contain file name, line number, or column information.

Use this default constructor when you want a complete trace with only summary method information about the call stack.

Examples

The following code example displays the first and last function calls in a stack trace.

Visual Basic

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 'Level5Method


C#

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;
   }        
}


Visual C++

      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;
         }

      }



Version Information

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
Platforms

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
See Also

Reference