设为首页 加入收藏

TOP

C++编程抛出0xc0000417错误代码
2014-11-01 16:45:08 来源: 作者: 【 】 浏览:67
Tags:编程 0xc0000417 错误 代码

  近日编写的程序中到处都用了的try...catch处理,但总是会静静地退出,从外部的进程查询它的退出码,结果是0xc0000417,上网一查,未知软件错误。


  它是谁来抛出的异常?windows,C++库,用户代码?


  我真没有抛出这样的异常,windows自己抛出的异常就应该不叫未知软件错误了,估计是C++框架抛出的。


  那么怎么找呢?我直接到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结束进程,这就是为什么程序总是静静地退出了。


  编辑特别推荐:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++满足特异条件的数列 下一篇C++成员函数指针的使用方法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: