首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请大家帮忙看看,小弟我该如何捕获错误(初学错误)

2012-02-04 
请大家帮忙看看,我该怎么捕获异常(初学异常)intm0intn7intc0try{cn/m}catch(exception&e){cout

请大家帮忙看看,我该怎么捕获异常(初学异常)
int   m=0;
int   n=7;
int   c=0;

try
{
c=n/m;
}catch(exception   &e)
{
cout < <e.what   () < <endl;
}
在这部分中,我尝试构造一个除零错误,但为什么总是不能被捕获呢?


如果这样
try
{
c=n/m;
}catch(...)
{
cout < < "异常 " < <endl;
}
这样可以捕获,但我又不知道该异常的内容了!!!

该怎样捕获异常并输出异常的内容呢?请各位帮帮忙

[解决办法]
除零异常不是exception 类
[解决办法]
不要把错误保护和异常处理混为一谈。
[解决办法]
回答楼主的问题

异常处理对于最底层的运行时逻辑错误是没有对应封装的异常类型的,比如说除零错误,空指针的操作,数值溢出等等,

但是它能够通过操作的状态(CPU的标志位,寄存器的状态值等等)捕捉到有问题的代码,所以在这种情况下你只能判断发生异常的代码段,而不能获取所发生的异常类型。

一般这种情况都通过添加额外的代码去保证操作的正确性。
[解决办法]
1 #include <iostream>
2 using namespace std;
3
4 int main()
5 {
6 int m=0;
7 int n=7;
8 int c=0;
9
10 try
11 {
12 if(m == 0) throw 0;
13 c=n/m;
14 }catch(int zero)
15 {
16 cout < < "zero = " < < zero < <endl;
17 //cout < <e.what () < <endl;
18 }
19 return 0;
20 }

这样就可以了 g++ 测试过
大家共同提高...
[解决办法]
我该怎么捕获异常的最好办法是若没有必要,不要使用异常:)

热点排行