c++异常处理实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五异常处理
实验课程名:面向对象程序设计(C++)
专业班级:学号:姓名:
实验时间:实验地点:指导教师:
cout<<"三角形的面积为
area="< cout<<"是否继续输入数据?否(a=0,b=0,c=0)"< } } 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块中的语句。