- ·上一篇内容:c++中typedef的使用方法
- ·下一篇内容:C++成员函数指针的使用方法
C++中抛出0xc0000417异常错误代码的原因
最近在编写C++程序时,瑞然在能够出错的地方都使用了try...catch处理,可是程序总是静静地退出,从外部的进程查询它的退出码,结果是0xc0000417,在网上搜索了一下,原来是“未知软件错误”。
那这个异常是谁抛出来的呢?我到VS的安装目录去找0xc0000417,结果在ntstatus.h找到定义:
//
// MessageId: STATUS_INVALID_CRUNTIME_PARAMETER
//
// MessageText:
//
// An invalid parameter was passed to a C runtime function.
//
#define STATUS_INVALID_CRUNTIME_PARAMETER ((NTSTATUS)0xC0000417L)
原来是非法句柄错误,但我又没有用_set_invalid_parameter_handler设置处理回调函数。
这样C++框架发现了这一情况,就调用了_invoke_watson函数,它把UnhandledExceptionFilter重设(导致程序一开始设置的UnhandledExceptionFilter不可用),然后调用默认的UnhandledExceptionFilter之后,就TerminateProcess结束进程,这就是为什么程序总是静静地退出了。
本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论