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 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