谈谈写代码时候的异常处理

利来利往 2013-01-25 12:10:31
方法1
#include<iostream> //包含头文件
#include<stdlib.h>
using namespace std;
double fuc(double x, double y) //定义函数
{
if(y==0)
{
throw y; //除数为0,抛出异常
}
return x/y; //否则返回两个数的商
}
void main()
{
double res;
try //定义异常
{
res=fuc(2,3);
cout<<"The result of x/y is : "<<res<<endl;
res=fuc(4,0); //出现异常
}
catch(double) //捕获并处理异常
{
cerr<<"error of dividing zero.\n";
}
system("pause");
}


方法2

#include<iostream> //包含头文件
#include<stdlib.h>
using namespace std;
double fuc(double x, double y) //定义函数
{
if(y==0)
{
cout<<"error of dividing zero.\n"; //除数为0,抛出异常
return y;
}
return x/y; //否则返回两个数的商
}
void main()
{
double res;
res=fuc(2,3);
cout<<"The result of x/y is : "<<res<<endl;
res=fuc(4,0); //出现异常
system("pause");
}


大家谈谈这两个处理有何看法
...全文
190 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lee_鹿游原 2013-01-25
  • 打赏
  • 举报
回复
第一种吧..
gamer67 2013-01-25
  • 打赏
  • 举报
回复
看看大家怎么说 帮顶
c1997sdn 2013-01-25
  • 打赏
  • 举报
回复
个人认为方法一比较好,源码便于管理和阅读。
sduxiaoxiang 2013-01-25
  • 打赏
  • 举报
回复
个人喜好了吧
ForestDB 2013-01-25
  • 打赏
  • 举报
回复
第一种是“出错再说” 第二种是“提前预防” 个人现在偏好第一种。
dingqiang107 2013-01-25
  • 打赏
  • 举报
回复
看用法是什么。如果是写库,除零并不是程序本身错误,而是使用方法不对。第一种好,由用户决定怎么处理。 如果是自己用的代码,出现除零说明程序本身写错了,必须要改正,第二种好,可以在出错的位置打印出函数名、文件名和行号,便于debug。出错以后,最好不要return y,而是立即abort(),这样debugger可以给出精确的错误位置。其实相当于不受宏控制的assert()。
妍妍 2013-01-25
  • 打赏
  • 举报
回复
如果所调用的库采用了异常处理机制,我们也必须写异常处理机制的代码 如果所调用的库和函数没有采用异常处理机制,我们也没有必要非写异常处理的代码,视个人喜好 或者决定于整个项目采取的错误处理机制,贵在统一

64,654

社区成员

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

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