请教高手,vc中的异常捕获
c++吧
全部回复
仅看楼主
level 1
中国雄起 楼主
2008年01月18日 02点01分 1
level 1
中国雄起 楼主
try{int i=10;i = i/0; //除零}catch(CException& e){MessageBox("除零操作")}在i/0的时候产生异常,而mfc中也说明CException是所有异常的基类,但是我运行的时候,没有跳转到这个catch块中,也就是没有显示消息框。
2008年01月18日 02点01分 2
level 8
你没有用throw抛出异常...不是程序自己检查的..是你抛出的...你都专门设定了i/0,直接抛..如果i/的是变量就检查na 个变量是否为0为0抛出错误...
2008年01月18日 06点01分 3
level 8
看来你根本不明白那个异常捕获 ...其实这么小的状况用标准类型的抛出处理就好... try { int i=10; i = i/n; //除零 if(n==0)throw 1;} catch(int) { MessageBox("除零操作") }
2008年01月18日 06点01分 4
level 1
中国雄起 楼主
可能楼上2位没有理解我的意思。我重新修改代码:try { int i=10; i = i/0; //除零 } catch(CException& e) { MessageBox("除零操作"); } catch(...) { MessageBox("有异常") ;}运行后,显示了“有异常” ,但没有显示“除零操作”。在i/0的时候产生异常,而mfc中也说明CException是所有异常的基类,但是我运行的时候,没有跳转到这个catch(CException& e)块中,也就是没有显示“除零操作”消息框。
2008年01月22日 05点01分 5
level 8
......那我也不知道了.....你的程序段没有抛出异常却被接受了...
2008年01月22日 08点01分 6
level 7
楼主用的什么编译环境
2008年01月22日 11点01分 7
level 6
你想要除0有结果.你得用WINDOWS内建的SEH或者用throw
2008年01月24日 00点01分 8
level 0
#include
void main(void){ DWORD dwCount1; DWORD dwTemp1=0; __try { dwCount1 = 256/dwTemp1; } __except(EXCEPTION_EXECUTE_HANDLER) { MessageBox(NULL,"Divide by zero","Fatal Error",MB_OK); return; } __except( GetExceptionCode() == STATUS_FLOATING_DIVIDE_BY_ZERO) { printf("handled by inner block"); } }
2008年03月04日 08点03分 9
level 1
我也遇到了这样的问题。不知是为啥?
2013年05月01日 11点05分 10
1