Bagikan melalui


StackTrace Konstruktor

Definisi

Menginisialisasi instans baru kelas StackTrace.

Overload

StackTrace()

Menginisialisasi instans StackTrace baru kelas dari bingkai penelepon.

StackTrace(Boolean)

Menginisialisasi instans StackTrace baru kelas dari bingkai penelepon, secara opsional menangkap informasi sumber.

StackTrace(IEnumerable<StackFrame>)

Membangun jejak tumpukan dari sekumpulan StackFrame objek.

StackTrace(StackFrame)

Menginisialisasi instans baru kelas StackTrace yang berisi satu bingkai.

StackTrace(Exception)

Menginisialisasi instans StackTrace baru kelas menggunakan objek pengecualian yang disediakan.

StackTrace(Int32)

Menginisialisasi instans StackTrace baru kelas dari bingkai penelepon, melewati jumlah bingkai yang ditentukan.

StackTrace(Exception, Int32)

Menginisialisasi instans StackTrace baru kelas menggunakan objek pengecualian yang disediakan dan melompati jumlah bingkai yang ditentukan.

StackTrace(Int32, Boolean)

Menginisialisasi instans StackTrace baru kelas dari bingkai pemanggil, melewati jumlah bingkai yang ditentukan dan secara opsional menangkap informasi sumber.

StackTrace(Thread, Boolean)
Kedaluwarsa.

Menginisialisasi instans StackTrace baru kelas untuk utas tertentu, secara opsional menangkap informasi sumber.

Jangan gunakan kelebihan beban konstruktor ini.

StackTrace(Exception, Int32, Boolean)

Menginisialisasi instans StackTrace baru kelas menggunakan objek pengecualian yang disediakan, melewati jumlah bingkai yang ditentukan dan secara opsional menangkap informasi sumber.

StackTrace(Exception, Boolean)

Menginisialisasi instans StackTrace baru kelas , menggunakan objek pengecualian yang disediakan dan secara opsional menangkap informasi sumber.

StackTrace()

Sumber:
StackTrace.cs
Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

Menginisialisasi instans StackTrace baru kelas dari bingkai penelepon.

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

Contoh

Contoh kode berikut menampilkan panggilan fungsi pertama dan terakhir dalam jejak tumpukan.

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

Keterangan

StackTrace dibuat dengan utas pemanggil saat ini, dan tidak berisi nama file, nomor baris, atau informasi kolom.

Gunakan konstruktor tanpa parameter ini saat Anda menginginkan pelacakan lengkap hanya dengan informasi metode ringkasan tentang tumpukan panggilan.

Berlaku untuk

StackTrace(Boolean)

Sumber:
StackTrace.cs
Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

Menginisialisasi instans StackTrace baru kelas dari bingkai penelepon, secara opsional menangkap informasi sumber.

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

Parameter

fNeedFileInfo
Boolean

true untuk mengambil nama file, nomor baris, dan nomor kolom; jika tidak, false.

Contoh

Contoh kode berikut menunjukkan berbagai StackTrace metode konstruktor.

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

Keterangan

StackTrace dibuat dengan utas penelepon saat ini.

Berlaku untuk

StackTrace(IEnumerable<StackFrame>)

Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

Membangun jejak tumpukan dari sekumpulan StackFrame objek.

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))

Parameter

frames
IEnumerable<StackFrame>

Kumpulan bingkai tumpukan yang harus ada dalam jejak tumpukan.

Berlaku untuk

StackTrace(StackFrame)

Sumber:
StackTrace.cs
Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

Menginisialisasi instans baru kelas StackTrace yang berisi satu bingkai.

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)

Parameter

frame
StackFrame

Bingkai yang harus dimuat StackTrace objek.

Contoh

Contoh kode berikut menulis informasi pelacakan tumpukan ke entri log peristiwa.

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)

Keterangan

Gunakan konstruktor ini ketika Anda tidak ingin overhead pelacakan tumpukan penuh.

Lihat juga

Berlaku untuk

StackTrace(Exception)

Sumber:
StackTrace.cs
Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

Menginisialisasi instans StackTrace baru kelas menggunakan objek pengecualian yang disediakan.

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

Parameter

e
Exception

Objek pengecualian untuk membangun jejak tumpukan.

Pengecualian

Parameternya e adalah null.

Keterangan

StackTrace dibuat dengan utas pemanggil saat ini, dan tidak berisi nama file, nomor baris, atau informasi kolom.

Jejak tumpukan yang dihasilkan menjelaskan tumpukan pada saat pengecualian.

Lihat juga

Berlaku untuk

StackTrace(Int32)

Sumber:
StackTrace.cs
Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

Menginisialisasi instans StackTrace baru kelas dari bingkai penelepon, melewati jumlah bingkai yang ditentukan.

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

Parameter

skipFrames
Int32

Jumlah bingkai ke atas tumpukan untuk memulai pelacakan.

Pengecualian

Parameternya skipFrames negatif.

Keterangan

StackTrace dibuat dengan utas pemanggil saat ini, dan tidak berisi nama file, nomor baris, atau informasi kolom.

Jika jumlah bingkai yang akan dilewati lebih besar dari atau sama dengan jumlah total bingkai pada tumpukan panggilan pada saat instans dibuat, StackTrace tidak akan berisi bingkai.

Berlaku untuk

StackTrace(Exception, Int32)

Sumber:
StackTrace.cs
Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

Menginisialisasi instans StackTrace baru kelas menggunakan objek pengecualian yang disediakan dan melompati jumlah bingkai yang ditentukan.

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)

Parameter

e
Exception

Objek pengecualian untuk membangun jejak tumpukan.

skipFrames
Int32

Jumlah bingkai ke atas tumpukan untuk memulai pelacakan.

Pengecualian

Parameternya e adalah null.

Parameternya skipFrames negatif.

Keterangan

StackTrace tidak berisi nama file, nomor baris, atau informasi kolom.

Jejak tumpukan yang dihasilkan menjelaskan tumpukan pada saat pengecualian.

Jika jumlah bingkai yang akan dilewati lebih besar dari atau sama dengan jumlah total bingkai pada tumpukan panggilan pada saat instans dibuat, StackTrace tidak akan berisi bingkai.

Lihat juga

Berlaku untuk

StackTrace(Int32, Boolean)

Sumber:
StackTrace.cs
Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

Menginisialisasi instans StackTrace baru kelas dari bingkai pemanggil, melewati jumlah bingkai yang ditentukan dan secara opsional menangkap informasi sumber.

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)

Parameter

skipFrames
Int32

Jumlah bingkai ke atas tumpukan untuk memulai pelacakan.

fNeedFileInfo
Boolean

true untuk mengambil nama file, nomor baris, dan nomor kolom; jika tidak, false.

Pengecualian

Parameternya skipFrames negatif.

Contoh

Contoh kode berikut menunjukkan berbagai StackTrace metode konstruktor.

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

Keterangan

Jika jumlah bingkai yang akan dilewati lebih besar dari atau sama dengan jumlah total bingkai pada tumpukan panggilan pada saat instans dibuat, StackTrace tidak akan berisi bingkai.

Berlaku untuk

StackTrace(Thread, Boolean)

Perhatian

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

Menginisialisasi instans StackTrace baru kelas untuk utas tertentu, secara opsional menangkap informasi sumber.

Jangan gunakan kelebihan beban konstruktor ini.

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)

Parameter

targetThread
Thread

Utas yang pelacakan tumpukannya diminta.

needFileInfo
Boolean

true untuk mengambil nama file, nomor baris, dan nomor kolom; jika tidak, false.

Atribut

Pengecualian

Utas targetThread tidak ditangguhkan.

Keterangan

Penting

Jangan gunakan konstruktor ini. Ini usang, dan tidak ada alternatif yang direkomendasikan. Ketika Anda menangguhkan utas, Anda tidak memiliki cara untuk mengetahui kode apa yang dijalankannya, dan kebuntuan dapat terjadi dengan sangat mudah. Misalnya, jika Anda menangguhkan utas saat menahan kunci selama evaluasi izin keamanan, utas lain di mungkin diblokir AppDomain . Jika Anda menangguhkan utas saat menjalankan konstruktor kelas, utas lain dalam upaya untuk menggunakan kelas tersebut AppDomain diblokir.

Lihat juga

Berlaku untuk

StackTrace(Exception, Int32, Boolean)

Sumber:
StackTrace.cs
Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

Menginisialisasi instans StackTrace baru kelas menggunakan objek pengecualian yang disediakan, melewati jumlah bingkai yang ditentukan dan secara opsional menangkap informasi sumber.

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)

Parameter

e
Exception

Objek pengecualian untuk membangun jejak tumpukan.

skipFrames
Int32

Jumlah bingkai ke atas tumpukan untuk memulai pelacakan.

fNeedFileInfo
Boolean

true untuk mengambil nama file, nomor baris, dan nomor kolom; jika tidak, false.

Pengecualian

Parameternya e adalah null.

Parameternya skipFrames negatif.

Keterangan

Jejak tumpukan yang dihasilkan menjelaskan tumpukan pada saat pengecualian.

Jika jumlah bingkai yang akan dilewati lebih besar dari atau sama dengan jumlah total bingkai pada tumpukan panggilan pada saat instans dibuat, StackTrace tidak akan berisi bingkai.

Lihat juga

Berlaku untuk

StackTrace(Exception, Boolean)

Sumber:
StackTrace.cs
Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

Menginisialisasi instans StackTrace baru kelas , menggunakan objek pengecualian yang disediakan dan secara opsional menangkap informasi sumber.

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)

Parameter

exceptione
Exception

Objek pengecualian untuk membangun jejak tumpukan.

needFileInfofNeedFileInfo
Boolean

true untuk mengambil nama file, nomor baris, dan nomor kolom; jika tidak, false.

Pengecualian

Parameternya e adalah null.

Keterangan

Jejak tumpukan yang dihasilkan menjelaskan tumpukan pada saat pengecualian.

Lihat juga

Berlaku untuk