StackTrace Konstruktor

Definisi

Menginisialisasi instans baru dari kelas StackTrace.

Overload

Nama Deskripsi
StackTrace()

Menginisialisasi instans StackTrace baru kelas dari bingkai pemanggil.

StackTrace(Boolean)

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

StackTrace(IEnumerable<StackFrame>)

Membuat jejak tumpukan dari sekumpulan StackFrame objek.

StackTrace(StackFrame)

Menginisialisasi instans StackTrace baru kelas 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 pemanggil, melewati jumlah bingkai yang ditentukan.

StackTrace(Exception, Int32)

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

StackTrace(Int32, Boolean)

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

StackTrace(Thread, Boolean)
Kedaluwarsa.

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

Jangan gunakan konstruktor ini kelebihan beban.

StackTrace(Exception, Int32, Boolean)

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

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
Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

Menginisialisasi instans StackTrace baru kelas dari bingkai pemanggil.

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

Contoh

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

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 penelepon saat ini, dan tidak berisi nama file, nomor baris, atau informasi kolom.

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

Berlaku untuk

StackTrace(Boolean)

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

Menginisialisasi instans StackTrace baru kelas dari bingkai pemanggil, 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.

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
Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

Membuat 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 pelacakan tumpukan.

Berlaku untuk

StackTrace(StackFrame)

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

Menginisialisasi instans StackTrace baru kelas 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 = 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
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 penelepon 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
Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

Menginisialisasi instans StackTrace baru kelas dari bingkai pemanggil, 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 yang meningkatkan tumpukan untuk memulai pelacakan.

Pengecualian

Parameternya skipFrames negatif.

Keterangan

StackTrace dibuat dengan utas penelepon 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
Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

Menginisialisasi instans StackTrace baru kelas menggunakan objek pengecualian yang disediakan dan melewati 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 yang meningkatkan 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
Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

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

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 yang meningkatkan 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.

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 konstruktor ini kelebihan beban.

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 jejak tumpukannya diminta.

needFileInfo
Boolean

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

Atribut

Pengecualian

Utas targetThread tidak ditangguhkan.

Keterangan

Important

Jangan gunakan konstruktor ini. Ini usang, dan tidak ada alternatif yang disarankan. 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
Sumber:
StackTrace.cs
Sumber:
StackTrace.cs

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

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 yang meningkatkan 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
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