Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In het volgende codevoorbeeld ziet u hoe niet-verwerkte uitzonderingen kunnen worden vastgelegd. Het voorbeeldformulier bevat een knop die, wanneer u erop drukt, een null-verwijzing uitvoert, waardoor er een uitzondering wordt gegenereerd. Deze functionaliteit vertegenwoordigt een typische codefout. De resulterende uitzondering wordt gevangen door de toepassingsbrede uitzonderingshandler die door de hoofdfunctie is geïnstalleerd.
Dit wordt bereikt door een gedelegeerde aan de ThreadException gebeurtenis te binden. In dit geval worden volgende uitzonderingen vervolgens naar de App::OnUnhandled methode verzonden.
Voorbeeld
// 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);
}