C Run-Time(CRT) Library參數異常處理

來源:互聯網
上載者:User

標籤:

在VC項目中使用C Run-Time函數時,如果參數異常,比如“strcpy_s”的strSource的字元數大於strDestination的大小,將引發參數異常,在Debug下是宣告失敗,Release下Run Time Error,尤其是在我們發布程式後,這種錯誤無法提供有效資訊定位錯誤,導致在客戶面前很狼狽,如何友好的顯示呢?其實我們可以簡單的設定自己的參數異常處理函數,友好的顯示錯誤資訊,記錄錯誤函數所在的源碼檔案、函數和行號,這樣有助於我們偵錯工具。

設定方法:

調用“_set_invalid_parameter_handler”設定參數異常處理函數:

 _invalid_parameter_handler newHandler = MyInvalidParameterHandler;
 _set_invalid_parameter_handler(newHandler);// 設定回呼函數
 _CrtSetReportMode(_CRT_ASSERT, 0);// 關閉斷言提示

 

回呼函數的定義:

void MyInvalidParameterHandler(const wchar_t* expression,
 const wchar_t* function,
 const wchar_t* file,
 unsigned int line,
 uintptr_t pReserved)
{
 wprintf(L"Invalid parameter detected in function %s."
  L" File: %s Line: %d\n", function, file, line);
 wprintf(L"Expression: %s\n", expression);
 abort();
}

C Run-Time(CRT) Library參數異常處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.