讓c++程序優雅的崩潰
來源:程序員人生 發布時間:2015-06-17 08:42:10 閱讀次數:5774次
程序崩潰是每個c++程序員都10分頭疼的問題。你可能使用了空指針,可能數組越界。總之在1些亂78糟的情況下,程序會出現閃退,或彈出類似以下的對話框等讓人難以接受的情況。

為了讓我們的程序死的不那末難看,windows提供了1個以下函數:
LPTOP_LEVEL_EXCEPTION_FILTER
WINAPI
SetUnhandledExceptionFilter(
__in_opt LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter
);
由MSDN我們可以知道:當前進程中發送任何異常時,SetUnhandledExceptionFilter都能捕獲到,并將調用lpTopLevelExceptionFilter回調函數。
所以在異常發送時 我們可以在lpTopLevelExceptionFilter中做我們想做的時。
LONG CallBackCrashHandler(EXCEPTION_POINTERS *pException)
{
// 這里你可以做1個漂亮的界面或其他
//
MessageBox(NULL,L"哎呀媽,崩潰了",L"毛病",MB_OK);
return EXCEPTION_EXECUTE_HANDLER;
}
void Crash()
{
int i = 13;
int j = 0;
int m = i / j;
printf("%d",m);
}
int _tmain(int argc, _TCHAR* argv[])
{
// 設置處理Unhandled Exception的回調函數
SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)CallBackCrashHandler);
Crash();
return 0;
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈