Cara: Menentukan dan Menginstal Handler Pengecualian Global
Contoh kode berikut menunjukkan bagaimana pengecualian yang tidak tertangani dapat diambil. Formulir contoh berisi tombol yang, ketika ditekan, melakukan referensi null, menyebabkan pengecualian dilemparkan. Fungsionalitas ini mewakili kegagalan kode umum. Pengecualian yang dihasilkan ditangkap oleh handler pengecualian di seluruh aplikasi yang diinstal oleh fungsi utama.
Ini dilakukan dengan mengikat delegasi ke acara tersebut ThreadException . Dalam hal ini, pengecualian berikutnya kemudian dikirim ke App::OnUnhandled
metode .
Contoh
// global_exception_handler.cpp
// compile with: /clr
#using <system.dll>
#using <system.drawing.dll>
#using <system.windows.forms.dll>
using namespace System;
using namespace System::Threading;
using namespace System::Drawing;
using namespace System::Windows::Forms;
ref class MyForm : public Form
{
Button^ b;
public:
MyForm( )
{
b = gcnew Button( );
b->Text = "Do Null Access";
b->Size = Drawing::Size(150, 30);
b->Click += gcnew EventHandler(this, &MyForm::OnClick);
Controls->Add(b);
}
void OnClick(Object^ sender, EventArgs^ args)
{
// do something illegal, like call through a null pointer...
Object^ o = nullptr;
o->ToString( );
}
};
ref class App
{
public:
static void OnUnhandled(Object^ sender, ThreadExceptionEventArgs^ e)
{
MessageBox::Show(e->Exception->Message, "Global Exeception");
Application::ExitThread( );
}
};
int main()
{
Application::ThreadException += gcnew
ThreadExceptionEventHandler(App::OnUnhandled);
MyForm^ form = gcnew MyForm( );
Application::Run(form);
}
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk