[求帮助]怎么样捕获全部的异常

C++语言 码拜 9年前 (2016-05-21) 1114次浏览
开发环境VS2012 ,编译选项已设置为\Eha ,下面的try  catch处理中有些异常捕获不到,修改为__try{…….}  __except(XXXX) {……}
也不能捕获全部异常。
try {
……
} catch(XXXXexception ) {
……
} catch(…) {
……
}
问一下怎么样才能捕获全部的异常?
谢谢!
解决方案

40

不能捕获全部异常。
你用SEH的语法吧。用标准c++异常这个基本就没什么太多的用。
应该在可能出现异常的代码进行安全性检查,例如对指针的check,Assert等方式

30

例如捕获洪水淹没办公室或机房这种异常?![求帮助]怎么样捕获全部的异常

30

可以使用
se_translator_function _set_se_translator(
_se_translator_function seTransFunction
);
将SEH异常转化为c++异常,从而可以使用c++的异常语法来捕捉windows的SEH异常

40

引用:
Quote: 引用:

设置为\Eha即可捕获结构化异常,题主说不能捕获全部是指什么

试了两种异常
第一种   除0  x = 5 / 0;
第二种  memcpy(fname, &recv_value[23], len)     len设定为 -1
第一种都能捕获到,第二种不能捕获到,
第二种异常不是SEH异常吗?

memcpy最后一个参数的类型是无符号的,你用-1会进行隐式转换
http://en.cppreference.com/w/cpp/string/byte/memcpy


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明[求帮助]怎么样捕获全部的异常
喜欢 (0)
[1034331897@qq.com]
分享 (0)