C++ 分母为0的异常捕获

将如下程序改成用trythrowcatch来捕捉异常,要求输出的内容完全不变。我怎么改都是在捕捉到第一个异常后就终止了,不知道怎么继续执行主程序。请帮帮忙,谢谢。#inc... 将如下程序改成用try throw catch来捕捉异常,要求输出的内容完全不变。我怎么改都是在捕捉到第一个异常后就终止了,不知道怎么继续执行主程序。请帮帮忙,谢谢。

#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;

double Division(double x, double y, int &error){
double sum = x + y;
error = 0;
if (sum < 0){
error = 1;
return 0;
}
if (sum == 0){
error = 2;
return 0;
}
return sum / sqrt(sum);
}
int main(){
int error;
double x[4] = { 3., -2., -4., 0. };
double y[4] = { 1., 2., 3., 1. };
for (int i = 0; i < 4; i++){
for (int j = 0; j < 4; j++){
double z = Division(x[i], y[j], error);
switch (error){
case 1: cerr << "Sum < 0" << endl;
break;
case 2: cerr << "Division by Zero" << endl;
break;
default: cout << z << endl;
}
}
}
system("pause");
return 0;
}
展开
 我来答
匿名用户
2013-09-14
展开全部
呵呵,还是我,我已经在你之前同样的问题里回答你了。要是觉的满意,2个都采纳了吧。谢谢~~有什么问题可以追问哟#include <iostream>
#include <math.h>
using namespace std;
double Division(double x, double y, int &error)
{
double sum = x + y;
if (sum < 0) throw 1;
if (sum == 0)throw 2.2;

return sum / sqrt(sum);
}
int main(){
int error;
double x[4] = { 3., -2., -4., 0. };
double y[4] = { 1., 2., 3., 1. };
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
try
{
double z = Division(x[i], y[j], error);
cout << z << endl;
}
catch(int)
{
cerr << "Sum < 0" << endl;
}
catch(double)
{
cerr << "Division by Zero" << endl;
}

}
}
system("pause");
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式