请大家帮忙看看,我该怎么捕获异常(初学异常)

Gao_TF 2007-07-13 10:51:26
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;
}
这样可以捕获,但我又不知道该异常的内容了!!!

该怎样捕获异常并输出异常的内容呢?请各位帮帮忙
...全文
190 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gao_TF 2007-07-19
  • 打赏
  • 举报
回复
谢谢,前几天外出,没看帖子,多谢大家的回答,揭帖
taodm 2007-07-13
  • 打赏
  • 举报
回复
不要把错误保护和异常处理混为一谈。
Gao_TF 2007-07-13
  • 打赏
  • 举报
回复
那岂不是说:如果我有一段代码编写的不是很好,我如果想定位错误的大体方向,就不能通过这种异常捕获的方式来给我一些提示了???(因为错误原因可能就是野指针)
也就是说,我只能通过排查代码来一段段看了???
是这样的么?
那么
catch(exception &e)
{
cout<<e.what ()<<endl;
}都能捕获什么东西呢?
taodm 2007-07-13
  • 打赏
  • 举报
回复
不捕获。应该在除法和解指针前做检查,指针释放后应该及时赋0.
Gao_TF 2007-07-13
  • 打赏
  • 举报
回复
那我该如何捕捉诸如除零,野指针等的异常啊?为什么第二种却都能捕捉到呢?
sms88 2007-07-13
  • 打赏
  • 举报
回复
除零异常不是exception 类
yuanchuang 2007-07-13
  • 打赏
  • 举报
回复
我该怎么捕获异常的最好办法是若没有必要,不要使用异常:)
linux_is_perfect 2007-07-13
  • 打赏
  • 举报
回复
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++ 测试过
大家共同提高...
BenjaminHuang 2007-07-13
  • 打赏
  • 举报
回复
回答楼主的问题

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

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

一般这种情况都通过添加额外的代码去保证操作的正确性。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧