#include // 例外ハンドラ関数 LONG WINAPI ExceptionHandler(EXCEPTION_POINTERS* exceptionInfo) { // 例外情報を取得 DWORD exceptionCode = exceptionInfo->ExceptionRecord->ExceptionCode; // 例外の種類に応じた処理を行う if (exceptionCode == EXCEPTION_ACCESS_VIOLATION) { MessageBox(NULL, L"アクセス違反例外が発生しました!", L"エラー", MB_OK | MB_ICONERROR); } else if (exceptionCode == EXCEPTION_INT_DIVIDE_BY_ZERO) { MessageBox(NULL, L"ゼロ除算例外が発生しました!", L"エラー", MB_OK | MB_ICONERROR); } else { MessageBox(NULL, L"不明な例外が発生しました!", L"エラー", MB_OK | MB_ICONERROR); } // 例外処理が終わったら継続する return EXCEPTION_CONTINUE_EXECUTION; } int main() { // 例外ハンドラを登録 SetUnhandledExceptionFilter(ExceptionHandler); __try { // 例外を発生させたいコードを記述します int* ptr = NULL; *ptr = 42; } __except (EXCEPTION_EXECUTE_HANDLER) { // 例外が発生した場合の処理を記述します MessageBox(NULL, L"例外が発生しました!", L"エラー", MB_OK | MB_ICONERROR); } return 0; }