文档详情

C++实验报告(异常处理).docx

发布:2017-05-24约2.33千字共5页下载文档
文本预览下载声明
实验三计算三角形面积中的异常处理一、实验目的1.了解C++异常处理机制二、实验环境Windows + VC++6.0。三、实验内容及要求1.设计一个程序根据输入的三边求三角形面积。2.要求设置异常处理机制,对不符合三角形条件的提示错误信息,不予计算;对输入非正数的边提示错误,并重新输入。四、实验步骤(1) 设计一个含三个参数的triangle函数求三角形的面积#includecmathdouble triangle(double,double,double);//triangle函数声明double triangle(double a,double b,double c) //triangle函数定义{double s=(a+b+c)/2; return sqrt(s*(s-a)*(s-b)*(s-c)); } (2)抛出异常WrongInput,aif(a0||b0||c0)throw WrongInput();//抛出WrongInput异常if(a+b=c||c+b=a||a+c=b) throw a; //抛出a异常(3)声明并捕捉异常WrongInput,aclass WrongInput{};catch(WrongInput)//捕捉wrongInput异常{cout输入错误!;}catch(double) //捕捉a异常{couta=a,b=b,c=c,不满足三角形三边条件endl;} 五、程序分析(1) 异常对象通常是一个class对象,通常用以下代码抛出throw WrongInput();但是throw 表达式也可以抛出任何类型的对象, 例如(虽然很不常见)在下面的代码例子中,函数mathFunc()抛出一个枚举类型的异常对象enum EHstate { noErr, zeroOp, negativeOp, severeError };int mathFunc( int i ){if ( i ==0 )throw zeroOp; // 枚举类型的异常}(2)抛出异常的语句或其调用函数要在try块中才能被捕获。try{throw WrongInput();//抛出WrongInput异常} catch(WrongInput)//捕捉wrongInput异常{cout输入错误!;}(3)一个catch 子句由三部分构成:1)关键字catch2)异常声明,在括号中的单个类型或单个对象声明(被称作异常声明,exception declaration)3)复合语句中的一组语句catch 子句的异常声明可以是一个类型声明或一个对象声明。catch(WrongInput);catch(double a);六、实验结果与总结实验结果:实验总结:(1)C++自身有着非常强的纠错能力,发展到如今,已经建立了比较完善的异常处理机制。C++的异常情况无非两种,一种是语法错误,即程序中出现了错误的语句,函数,结构和类,致使编译程序无法进行。另一种是运行时发生的错误,一般与算法有关。关于语法错误,不必多说,写代码时心细一点就可以解决。C++编译器的报错机制可以让我们轻松地解决这些错误。第二种是运行时的错误,常见的有文件打开失败、数组下标溢出、系统内存不足等等。而一旦出现这些问题,引发算法失效、程序运行时无故停止等故障也是常有的。这就要求我们在设计软件算法全面比如针对文件打开失败的情况,保护的方法有很多种,最简单的就是使用“return”命令,告诉上层调用者函数执行失败;另外一种处理策略就是利用c++的异常机制,抛出异常。异常不能够保持在未被处理的状态,异常对于一个程序非常重要,它表示程序不能够继续正常执行。(2)C++异常处理机制是一个用来有效地处理运行错误的非常强大且灵活的工具,它提供了更多的弹性、安全性和稳固性,克服了传统方法所带来的问题异常的抛出和处理主要使用了以下三个关键字:Trythrow catch抛出异常即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为:throw 表达式。附1:完整的原程序#includeiostream#includecmathusingnamespace std; class WrongInput{};void main() {double triangle(double,double,double); //triangle函数声明double a,b,c; while(1){cinabc; try{if(a0||b0||c0)throw WrongInput();//抛出WrongInput异常else couttriangle(a,b,c)endl; } catch(WrongInput)//捕捉wrongInput异常
显示全部
相似文档