讓c++程式優雅的崩潰

來源:互聯網
上載者:User

標籤:c++   異常   

程式崩潰是每一個c++程式員都十分頭疼的問題。你可能使用了null 指標,可能數組越界。總之在一些亂七八糟的情況下,程式會出現閃退,或者彈出類似如下的對話方塊等讓人難以接受的情況。



為了讓我們的程式死的不那麼難看,windows提供了一個如下函數:

LPTOP_LEVEL_EXCEPTION_FILTER
WINAPI
SetUnhandledExceptionFilter(
    __in_opt LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter
    );

由MSDN我們可以知道:當前進程中發送任何異常時,SetUnhandledExceptionFilter都能捕獲到,並將調用lpTopLevelExceptionFilter回呼函數。

所以在異常發送時 我們可以在lpTopLevelExceptionFilter中做我們想做的時。


LONG CallBackCrashHandler(EXCEPTION_POINTERS *pException)  {   // 這裡你可以做一個漂亮的介面或者其他//  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;  }




讓c++程式優雅的崩潰

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.