다음을 통해 공유


방법: 정의 및 전역 예외 처리기를 설치 합니다.

다음 코드 예제에서는 어떻게 처리 되지 않은 예외를 보여 캡처할 수 있습니다.단추 예제 양식이 들어, 단추를 눌렀을 때 예외를 throw 하는 null 참조를 수행 합니다.이 기능은 일반적인 코드 오류를 나타냅니다.결과 예외는 기본 함수에 의해 설치 된 응용 프로그램 수준의 예외 처리기에서 catch 됩니다.

이 대리자에 바인딩하는 방식으로 수행 되는 ThreadException 이벤트입니다.이 경우 후속 예외 다음에 보내지는 App::OnUnhandled 메서드.

예제

// 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);
}

참고 항목

기타 리소스

예외 처리(C++ 구성 요소 확장)