码迷,mamicode.com
首页 > 其他好文 > 详细

C Run-Time(CRT) Library参数异常处理

时间:2015-02-28 18:32:22      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

在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参数异常处理

标签:

原文地址:http://www.cnblogs.com/shaoxuejun/p/4305862.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!