StackTrace Konstruktor
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
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
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
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.