2、异常处理 try 检查 throw 抛出 catch 捕获
输入三角形的三条边长,求三角形的面积。当输入边的长度小于或等于0,抛出int异常,给出警告结束程序。
或者当三条边都大于0,但不能构成三角形时(两边之和大于第三边),抛出double异常,给出警告结束程序运行。
#include<iostream>
#include<cmath>
using namespace std;
class Triangle
{
double a;
double b;
double c;
double s;
public:
double area()
{
double l = (a + b + c) / 2;
if (a <= 0 || b <= 0 || c <= 0 || a + b <= c || b + c <= a || c + a <= b)
{
throw a;
}else
s =sqrt( l * (l - a) * (l - b) * (l - c));
return s;
}
void setput()
{
cin >> a;
cin >> b;
cin >> c;
}
int loop()
{
try
{
while (1)
{
cout << area() << endl;
cin >> a >> b >> c;
}
}
catch (double)
{
cout << a << " " << b << " " << c << "this is a wrong" << endl;
}
cout << "end" << endl;
return 0;
}
};
int main(void)
{
Triangle tri;
tri.setput();
tri.loop();
system("puase");
return 0;
}