a>>b>>c;}}catch(double){cout}return 0;}double triangl">

c++异常处理实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五异常处理

实验课程名:面向对象程序设计(C++)

专业班级:学号:姓名:

实验时间:实验地点:指导教师:

cout<<"三角形的面积为

area="<

cout<<"是否继续输入数据?否(a=0,b=0,c=0)"<>a>>b>>c;

}

}

catch(double)

{

cout<<"输入的三边有误!"<

}

return 0;

}

double triangle(double a,double b,double c)

{

double area;

if(a+b>c&&a+c>b&&b+c>a)

{

double s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

}

else

throw a;

return area;

}

程序运行结果

程序分析

Try和catch后有加{},并且catch也要单独使用,后面要接try语句之间

}

system("pause");

}

程序运行结果

程序分析

Try和catch块中必须有用花括号括起来的复合语句,即使花括号内只有一个语句,也不能省略花括号。

3. 求n!的函数,当用户的输入太大时(例如50),会出现错误。编写一个程序,使用异常处理机制来解决这一问题。

程序代码

#include

using namespace std;

int fac(int n)

{

int result=1;

if(n<0)

throw "Argument for factorial negative";

else if(n>16)

throw n;

while(n)

{

程序分析

string类型变量在传递时相当于字符指针。并且在一个try-catch结构中只能有一个try块,但可以有多可catch块。

4.设计一个关于栈的类,并且添加异常处理,判断栈空和栈溢出,在主程序中对其进行测试。

程序代码

#include

#include

const int SIZE=100;

using namespace std;

class Full

{

private:

int a;

public:

Full(int i):a(i){}

int getValue()

{

return a;

}

};

class Empty

{

public:

void show()

原始数据文件:

注释for(int j=0;j<3;j++)语句运行结果:

注释while(infile)语句结果:

程序分析

此程序中,抛出的异常时两个类:Full和Empty,因此在catch语句中分别对应这两种类判断栈溢出和栈空。而catch(Full e)或catch(Empty e)中的e是一个类的对象,用来调用对象中的成员函数。

三、结论

通过此次实验,我知道了如何处理异常,并且还知道在异常处理中处理析构函数,析构对象的顺序与构造的顺序相反,然后执行与异常信息匹配的catch块中的语句。

相关文档
最新文档