c++异常处理实验报告

c++异常处理实验报告
c++异常处理实验报告

实验五异常处理

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

专业班级:学号:姓名:

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

一、实验目的和要求

1、了解异常的种类

2、理解异常继承体系

3、学习简单的异常处理方法。

4、掌握C++中异常的定义与使用方法;

二、实验内容

1.给出三角形的三边a,b,c,求三角形的面积。只有a+b>c,b+c>a,c+a>b 时才能构成三角形。设置异常处理,对不符合三角形条件的输出警告信息,不予计算。

程序代码

#include

#include

using namespace std;

int main()

{

double triangle(double,double,double);

double a,b,c;

cout<<"请输入三角形的三边:"<

cin>>a>>b>>c;

try

{

while(a>0&&b>0&&c>0)

{

cout<<"三角形的面积为

area="<

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

cin>>a>>b>>c;

}

}

catch(double)

{

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

}

return0;

}

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语句之间

不能有其他语句。

2.编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。程序代码

#include

#include

using namespace std;

double squareroot(double&a)

{

double n;

if(a>=0)

n=sqrt(a);

else

throw a;

return n;

}

void main()

{

double m;

char h='Y';

try

{

while(h=='Y')

{

cout<<"请输入一个需开方的数:"<

cin>>m;

cout<

cout<<"是否继续输入?Y/N"<

cin>>h;

}

}

catch(double)

{

cout<<"输入的数为负数,无法开方!"<

}

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)

{

result*=n;

n--;

}

return result;

}

int main()

{

int n;

char h='Y';

try

{

while(h=='Y')

{

cout<<"Please input a number n to xalculte n!:";

cin>>n;

cout<

cout<<"是否继续输入?Y/N"<

cin>>h;

}

}

catch(int)

{

cout<<"Exception occurred:"<<"Overflow!"<

}

catch(char*s)

{

cout<<"Exception occurred:"<

}

return0;

}

程序运行结果

程序分析

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()

{

cout<<"stack is empty!"<

}

};

class Stack

{

private:

int stack[SIZE];

int tos;

public:

Stack()

{

tos=-1;

}

~Stack(){}

void push(int a)

{

if(tos>=SIZE-1)

throw Full(a);

stack[++tos]=a;

}

int pop()

{

if(tos<0)

throw Empty();

return stack[tos--];

}

int top()const

{

return tos;

}

};

int main()

{

Stack s;

int b[200],i=0;

ifstream infile("data.dat",ios::in);

if(!infile)

{

cerr<<"open data.dat error!"<

exit(1);

}

try

{

while(infile)

//for(int j=0;j<3;j++)

{

infile>>b[i];

s.push(b[i]);

++i;

}

for(int i=0;i<=SIZE;i++)

cout<

}

catch(Full e)

{

cout<<"Exception:Stack Full..."<

cout<<"The value not push in stack:"<

}

catch(Empty e)

{

e.show();

}

return0;

}

程序运行结果

原始数据文件:

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

注释while(infile)语句结果:

程序分析

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

三、结论

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

JAVA实验3-异常处理和常用实用类-报告

信息工程学院1 《Java语言程序设计》实验报告 学院: 班级: 姓名: 学号: 成绩: 一、实习目标 (1)掌握Java的异常处理机制及相关实现方法; (2)掌握常用实用类的使用,熟悉使用JDK_API进行软件开发; (3)掌握Java中正则表达式的基本用法。 二、实验过程 实验题1 try-catch练习: JAVA_API: getMassage():返回此throwable或exception的详细消息字符串,正数除0 返回Infinity,负数除0返回-Infinity。 toString():对象利于null的详细消息字符串创建,则返回此对象的实际类的 名称,返回此throwable的简短描述。 printStackTrace():将错误的详细信息追踪到代码中具体某一行,将throwable 及其追踪输出至标准错误流。 代码截图: CatchError类: 实验报告的内容与格式按任课教师的要求书写。

MainTest类:

运行结果: 实验题2 用户自定义异常: 在ExceptionTest类中进行成绩录入和平均成绩的计算。 StasticScore类为成绩录入的具体方法,并进行异常检测。 ScoreException类继承StasticScore,输出错误提示。 代码截图: ExceptionTest类: ScoreException类:

StasticScore类:

运行结果:

实验题3 String & StringBuffer的使用: JAVA_API: Int indexOf(String str, int fromIndex)函数:返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。如果不存在,返回-1。 Static String valueOf(int i)函数:返回int参数的字符串表示形式。该表示形式正是单参数的interger.toString方法返回的结果。 Int indexOf(String str, int fromIndex)函数:返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。如果不存在,则返回-1。 Public StringBuffer append(String str)函数:将指定的字符串追加到此字符序列。按顺序追加String变量中的字符,使此序列增加到该变量的长度。 代码截图: TestOfKeyword类:

java异常处理作业

Java异常处理作业 孙月巧 1、参考下面的程序,试修改程序,捕获相关异常,使得程序能正常运行。【提示:用错误数据测试,即可得到异常类名,运行时主方法参数输入 abc 测试】 package November; import java.util.Scanner; public class StringIndexOutOf{ public static void main(String args[]){ System.out.println("请输入一个字符串:"); try{ Scanner reader=new Scanner(System.in); String str = reader.nextLine(); System.out.println("第四个字符为 " + str.charAt(3)); int aa = Integer.parseInt(str); System.out.println("平方为 " + aa * aa); } catch(StringIndexOutOfBoundsException e){ System.out.println("您输入的数值下标越界"); } catch(NumberFormatException nfe){ System.out.println("您输入的不是数字"); } } } 2、从命令行得到5个整数,放入一整型数组,然后打印输出,要求:如果输入数据不为整数,要捕获Integer.parseInt()产生的异常,显示“请输入整数”,捕获输入参数不足5个的异常(数组越界),显示“请输入至少5个整数”。 package November; import java.util.Scanner; public class Test2 { public static void main(String[] args) { System.out.println("请输入五个整数:"); try { int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]); int c = Integer.parseInt(args[2]); int d = Integer.parseInt(args[3]); int e = Integer.parseInt(args[4]);

C异常处理(精)

#include "stdafx.h" #include #include #include // 内存泄露检测机制 #define _CRTDBG_MAP_ALLOC #ifdef _DEBUG #define new new(_NORMAL_BLOCK, __FILE__, __LINE__ #endif // 自定义异常类 class MyExcepction { public: // 构造函数,参数为错误代码 MyExcepction(int errorId { // 输出构造函数被调用信息 std::cout << "MyExcepction is called" << std::endl; m_errorId = errorId; } // 拷贝构造函数 MyExcepction( MyExcepction& myExp { // 输出拷贝构造函数被调用信息 std::cout << "copy construct is called" << std::endl; this->m_errorId = myExp.m_errorId; }

~MyExcepction( { // 输出析构函数被调用信息 std::cout << "~MyExcepction is called" << std::endl; } // 获取错误码 int getErrorId( { return m_errorId; } private: // 错误码 int m_errorId; }; int main(int argc, char* argv[] { // 内存泄露检测机制 _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ; // 可以改变错误码,以便抛出不同的异常进行测试 int throwErrorCode = 110; std::cout << " input test code :" << std::endl; std::cin >> throwErrorCode; try { if ( throwErrorCode == 110 { MyExcepction myStru(110;

JAVA异常实验报告

一. 实验目的及实验环境 实验目的:1.理解JA V A对异常的处理 2.掌握自定义异常的定义方式 实验环境:eclipse 4.4 二. 实验内容 1.假设Sum类中有一个addContinue(int n)方法,当n>0时,方法翻译1+2+…+n 的和;当n<0时,方法抛出一个受检查的ArgumentException异常。ArgumentException类应该提供一个能够接受并保存n值得构造方法,以及一个能返回n值得实例方法,现定义Sum类以及ArgumentException类,并编程测试它们。 三.方案设计 1.定义三个类Sum,ArgumentException,Test类 2.分别在类中实现加法,异常抛出和测试 四.测试数据及运行结果 1.正常测试数据(3组)及运行结果;

2.非正常测试数据(2组)及运行结果。 五.总结 1.实验过程中遇到的问题及解决办法; ①中没有明确表示需要进行异常抛出很有可能就会忘记这个题目存在的问题。所以平常程序设计时,应该多考虑不同的情况,防止程序出现不可逆的漏洞。 ②如果发生可识别的运行错误,系统应产生一个相应的异常类对象,并进一步寻找异常处理代码来处理它,确保程序能从故障中恢复,之程序能够运行下去,直

到结束。 2.对设计及调试过程的心得体会。 中断,影响程序正常运行的事件称为异常。异常处理是使程序从故障中恢复,他包括提示异常信息、不产生无效结果和释放资源三方面内容。其中,显示异常信息和不产生无效结果可通过try和catch块来实现,释放资源可通过finally块实现。 附代码 public class Add { public int addContinue(int i) throws ArgumentException{ int sum=0; if( i<0){ throw new ArgumentException(i); } for(int n=0;n<=i;n++){ sum=sum+n; } return sum; } } public class ArgumentException extends Exception { private int n; public ArgumentException(int n) { this.n = n; } public int getN(){ return n; } } public class test { public static void main(String[] args){ Add s = new Add(); try { System.out.println(s.addContinue(-1)); } catch (ArgumentException e) { System.out.println(e.getN()); } } }

特殊作业安全考试试题(答案)

重庆睿哲制药有限责任公司 特殊作业安全考试试卷 姓名:部门:得分: 一、填空题(每空1分,共35分): 1、动火作业:能直接或间接产生明火的工艺设置以外的可能产生火焰、火花和炽热表面的非常规作业非常规作业,动火作业分为二级动火作业、一级动火作业和特殊动火作业。 2、凡处于GB50016-2006《建筑设计防火规范》规定的甲、乙类区域的动火作业,对于用火点周围有可能泄漏易燃、可燃物料的设备,应采取有效的空间隔离措施。动火期间距动火点30m内不得排放各类可燃气体;距动火点15 m内不得排放各类可燃液体;不得在动火点10 m范围内及用火点下方同时进行可燃溶剂清洗或喷漆等作业。 3、动火分析合格判定方法:当被测气体或蒸气的爆炸下限大于等于4 %时,其被测浓度应不大于0.5 %(体积百分数);当被测气体或蒸气的爆炸下限小子4 %时,其被测浓度应不大于0.2 %(体积百分数)。 4、使用气焊、气割动火作业时,乙炔瓶应直立放置;氧气瓶与乙炔气瓶间距不应小于5 m,二者与动火作业地点不应小于10 m,并不得在烈日下曝晒。 5、取样与动火间隔不得超过30min,如超过此间隔或动火作业中断时间超过60 min,应重新取样分析。特殊动火作业期间还应随时进行监测。 6、凡距坠落高度基准面 2 m 及其以上,有可能坠落的高处进行的作业称为高处作业。作业高度在2m ≤h≤5m 时,称为一级高处作业。作业高度在5m30m 以上时,称为特级高处作业。 7、雨天和雪天进行高处作业时,应采取可靠的防滑、防寒和防坠落措施。 8、受限空间照明电压应小于等于36V ,在潮湿容器、狭小容器内作业电压应小于等于12 V。受限空间出入口应保持畅通,不得堵塞出入口。 9、高处作业“三宝”包括:安全带、安全帽、安全网。作业人员在作业中应正确使用防坠落用品与登高器具、设备,安全带不得低挂高用。系安全带后应检查扣环是否扣牢。10、吊装作业按吊装重物的质量分为三级:一级吊装作业吊装重物的质量大于100 t;二级吊装作业吊装重物的质量大于等于40 t至小于等于100 t;三级吊装作业吊装重物的质量小于40 t。 11、《受限空间作业证》有效期不应超过24 h。 二、判断题(每题1分,共18分): 1、加盲板的位置一般在来料阀前部法兰处,盲板两侧均应加垫片并用螺栓紧固,并做到无泄漏。(√) 2、高处作业用的脚手架的搭设应符合安全要求,两端应捆绑牢固。作业前,应检查所用的安全设施是否坚固、牢靠。(√) 3、按照《化学品生产单位特殊作业安全管理规范》(GB30871-214)规定:遇节日、假日或其它特殊情况时,动火作业应升级管理。(√) 4、可以用吊钩缠绕重物,但不得将不同种类或不同规格的索具混在一起使用。( ×) 5、进入受限空间、高处等进行动火作业时,还须执行化学品生产单位受限空间作业安全规范和化学品生产单位高处作业安全规范的规定。(√) 6、作业人员必须服从作业监护人的指挥,如发现作业人员不按照规范操作时,应停止作业并撤出受限空间。( √) 7、施救人员必须熟知救援环境、救援技能和方法。不具备救援条件,或不能保证施救人员的生命安全时,禁止盲目施救。( √) 8、休息时,为方便吊装作业,可以将吊物、吊笼、吊具和吊索吊在空中。( ×) 9、受限空间的作业一旦完成,所有作业者及所携带的设备和物品均已撤离,或者在受限空间及其附近发生了许可所不容许的情况,要终止进入并注销许可。( √) 10、动火作业超过有效期限,应重新办理《动火作业证》.( √) 11、容积较大的受限空间采样点,应采取上、中、下各部位取样。( √) 12、为防止受限空间内作业人员发生因缺氧窒息死亡事故的发生,可以在受限空间外用氧气瓶内的氧气

java 异常处理

实验五异常处理 【实验目的】 1.了解Java 中异常处理(exception)的作用。 2.掌握异常处理的设计方法。 【实验内容】 一.Java的异常处理。源文件是Ex4_1.java。要捕捉的异常是除数为零和数组下标越界。 通过修改a和c[]下标值体验程序。 public class Ex4_1 { public static void main (String[] args) {int a, b; int c[]={1,2,3}; try{ a=10; b=100/a; System.out.println ("当前a值:"+a); c[2]=200; System.out.println ("当前数组长:"+c.length); }catch(ArithmeticException e) { System.out.println ("除零错误:"+e); } catch(ArrayIndexOutOfBoundsException e) { System.out.println ("数组下标越界:"+e); } finally { System.out.println ("我是finally");} System.out.println ("我能被正常执行到"); } } 【思考问题】 ①先运行上面没有错误程序,观察运行结果。 ②按下条件分别修改数据,编译后运行,观察输出结果,分析在try…catch块里那 些语句没有被执行,为什么? 块外那些语句可被执行到,为什么? ◆修改a=0,保持c[2]=200; ◆保持a=10,修改c[3]=200, ◆修改a=0,修改c[2]=200; ③再添加一个catch{Exception e}{ },位置在最前面,观察编译信息,说明什么?2.自定义异常类。注意throw、throws的使用。源文件是Ex4_2.java。 class MyException extends Exception //自定义异常类 {public String toString() { return "除数等于零"; } }

java异常处理例题代码教学文稿

j a v a异常处理例题代 码

App9_1.java:输出一个数组的所有元素,捕获数组下标越界异常和除娄为0异常。public class App9_1{ public static void main(String args[]){ int i; int[] a={1,2,3,4}; for(i=0;i<5;i++) System.out.println(" a["+i+"]="+a[i]); System.out.println("5/0"+(5/0)); } } App9_2.java:使用try-catch-finall语句对程序中的异常进行捕获与处理。 public class App9_2{ public static void main(String args[]){ int i; int a[]={1,2,3,4}; for (i=0;i<5;i++){ try{ System.out.print("a["+i+"]/"+i+"="+(a[i]/i)); } catch(ArrayIndexOutOfBoundsException e){ System.out.print("捕获到了数组下标越界异常"); } catch(ArithmeticException e){ System.out.print("异常类名称是:"+e); //显示异常信息 } catch(Exception e){ System.out.println("捕获"+e.getMessage()+"异常!"); //显示异常信息 } finally{ System.out.println(" finally i="+i); } } System.out.println("继续!!"); } } App9_3.java:使用throw语句在方法中抛出异常。 public class App9_3{ public static void main(String args[]){ int a=5,b=0; try{ if (b==0) throw new ArithmeticException(); //抛出异常,不是必须的 else System.out.println(a+"/"+b+"="+a/b); //若不抛出异常,则运行此行

第五章Java语言异常处理-实验题目

第五章Java语言异常处理--实验题目 一、实验目的 1. 掌握Java的异常处理机制。 2. 掌握try、catch、throws和finally这5个关键字的用法。 3. 掌握成员的几个异常类。 4. 掌握自定义异常的使用。 二、实验内容 1.编写程序,从键盘上输入两个数。将第一个数除以第二个数并显示结果;处理所有可能的异常。 2.写出下面程序运行的结果: 3.写出下列程序的输出结果。

4.有下列程序: 若用下面方式执行该程序,则baz的值为( )。 java Test Red Green Blue (A)“”(B)null (C)"Red”(D)”BIue”(E)”Green”(F)代码不能编译(G)程序抛出异常5.有下列程序: 该程序的输出结果为( )。 (A)没有任何输出(B)输出“Finally”(C)编译错误(D)抛出异常 6.有下列程序:

该程序的输出结果为( )。 (A)没有任何输出(B)输出“Finally”(C)编译错误(D)抛出异常7.修改下列程序的错误之处。 8.写出下列程序的运行结果。

9.编写一个程序,要求从键盘输入一个double型的圆的半径,计算并精出其面积。 测试当输入的数据不是double型数据(如字符串“abc”)会产生什么结果,怎样处理。10.编写一个应用程序,在main()方法中使用try块抛出一个Exception类的对象,为Exception的构造方法提供一个字符串参数,在catch块内捕获该异常并打印出字符串参数。添加一个finally块并打印一条消息。 11.创建一个自定义的异常类,该类继承Exception类,为该类写一个构造方法,该构造方法带一个String类型的参数。写一个方法.令其打印出保存下来的String对泉。再编写一个类,在main()方法中使用try--catch结构创建一个MyException类的对象并抛出,在catch块中捕获该异常井打印出传递的String消息。

Java实验报告 继承、多态、接口和异常处理

实验5 继承、多态、接口和异常处理 一、实验目的 1、掌握Java的类和对象的声明和使用方法; 2、掌握Java的类的继承和实现方法; 3、掌握多态性在类的继承中的运用; 4、掌握接口的定义与使用; 5、掌握基本异常的处理机制; 6、熟悉try语句与catch语句的搭配使用; 7、了解有异常处理与没有异常处理的差别; 8、多重catch语句的使用; 9、使用Throws声明异常和Throw抛出异常。 二、实验环境 1、PC微机; 2、DOS操作系统或 Windows 操作系统; 3、Java sdk程序开发环境、eclipse集成环境。 三、实验内容 1. 设计三个类,分别是学生类Student,本科生类UnderGraduate,研究生类 Postjgraduate,其中Student类是一个抽象类,它包含学生的基本信息如姓名、所学课程、课程成绩等,而Undergraduate类和Postgraduate类都是Student类的子类,这两个类计算课程成绩等级的方法有所不同,如下表所示。假设某班级里既有研究生又有本科生,编写程序统计出全班学生 2. 和 Mobilephone具体实现,并设计一个应用程序类来使用这些类。 3.要求设计一个GUI图形窗口程序,该程序让用户输入一个星期中的任意一天的数字1-7,然后输出该数字所对应的是星期几。 四、实验步骤 实验内容一

1.建立package experiment5_1,其最终目录结构如下: 2.建立Student类: package experiment5_1; public abstract class Student { final static int CourseNo = 3; String name; String type; int[] courses; String courseGrade; public Student(String name) { https://www.360docs.net/doc/dc17355047.html, = name; courses = new int[CourseNo]; courseGrade = "" ; } public abstract void calculateGrade(); public String getName( ) { return name; } public String getType( ) { return type ; } public String getCourseGrade( ) { return courseGrade; } public int getCourseScore(int courseNumber) { return courses[courseNumber]; } public void setName(String name) { https://www.360docs.net/doc/dc17355047.html, = name; } public void setType(String type) { this.type = type; } public void setCourseScore(int courseNumber, int courseScore) { //按课程索引号设置课程成绩 this.courses[courseNumber] = courseScore ; } }

JAVA 异常处理实验报告

实验三异常处理 [实验目的] 1.掌握异常处理方法及熟悉常见异常的捕获方法。 [实验内容] 1.练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch 子句的使用。 [实验步骤与要求] 第1题异常处理 要求声明定义两个Exception的异常子类:NoLowerLetter类和NoDigit类。再声明一个People类,该类中的void printLetter(char c)方法抛出NoLowerLetter异常类对象,void PrintDigit(char c)方法抛出NoDigit异常类对象。 [作业提交] 将代码贴在下面: class NoLowerLetter extends Exception{ String message; NoLowerLetter(char c){ message=c+"不是正数"; } public String getMessage(){ return message; } } class NoDigit extends Exception{ String message; NoDigit(char c){ message=c+"不是偶数"; }

public String getMessage(){ return message; } } class People{ public void printLetter(char c) throws NoLowerLetter{ if(c<0){ NoLowerLetter ex=new NoLowerLetter(c); throw(ex); } double number=Math.sqrt(c); System.out.println(c+"的平方根:"+number); } public void PrintDigit(char c) throws NoDigit{ if(c%2!=0){ NoDigit ex=new NoDigit(c); throw(ex); } double number=Math.sqrt(c); System.out.println(c+"的平方根:"+number); } } public class bianma{ public static void main(String args[]){ People p=new People(); try{ p.printLetter('Q'); p.printLetter(' '); } catch( NoLowerLetter e){ System.out.println(e.getMessage()); } try{ p.PrintDigit('d'); p.PrintDigit('a'); } catch( NoDigit e){ System.out.println(e.getMessage()); } } } 将结果运行截屏贴在下面:

实验三 Java异常处理

实验三Java异常处理 一、实验目的 1)掌握Java异常的概念及工作机制 2)掌握异常的分类 3)掌握抛出异常语句的使用(throw) 4)掌握抛出捕获处理异常语句的使用(try…catch…finally) 5)掌握上抛异常语句的使用(throws) 6)掌握创建自定义异常 二、实验内容 自定义一个异常类,求两个数的最大公约数。 三、实验步骤 1)声明一个类,继承与Exception,用来处理求公约数时被除数小于除数抛出异常。 2)声明一个方法来求公约数。 3)在主方法里通过控制台输入二个人数并把求公约数的方法写在try{}中,catch{}填写出现的自定义的异常及ArithmeticException 异常。 四、实现代码 import java.util.Scanner; class MyException extends Exception { int m,n;

public MyException(int m,int n) { this.m=m; this.n=n; } public void process() { System.out.println("被除数小于除数!"); } } public class divisor{ int m,n; public divisor(int m,int n) { this.m=m; this.n=n; } public int div() throws MyException { int tmp;

if(m

JAVA异常处理实验报告

实验报告 实验名称:异常处理 学院:电子信息工程学院 班级:电信01班 姓名:鲁川 学号: 121040110113 日期: 2014.11.3 成绩:

一、实验名称:异常处理 二、实验目的: 1.掌握异常处理机制的运作 2.掌握处理异常的几个子句:try…catch..finally、thorws和throw 3.掌握字符串类的相关操作 三、实验内容: 1. 编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数 组元素,使其产生ArrayIndexOutOfBoundsException异常。在catch子句里捕获此异常对象,并且打印“数组越界”信息,加一个finally子句,打印一条信息以证明这里确实得到了执行。 2. 给定一个字符串,将字符串中的所有大写字母变成小写字母,数字用0来代替,其他符号用#代替。 四、实验代码 1.ExceptionDemo.java class ExceptionDemo { public static void main(String[] args) { int [] arr = new int[]{13,24,1,53,24}; try { int num = arr[5]; } catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组越界啦!!!"); } finally { System.out.println("此处代码一定会执行的--finally"); } } } 运行结果:

2.StringTest.java class StringTest { public static void main(String[] args) { String str = "DfS分手dsA吧25J奋45斗"; System.out.println("原字符串=="+str); StringBuffer sb = new StringBuffer(); for(int i = 0;i='A' && ch<='Z') { sb.append(Character.toLowerCase(ch)); } else if(ch>='a' && ch<='z') { sb.append(ch); }else if(ch>=49 && ch<=58) { sb.append(0); }else { sb.append("#"); }

华师网络学院作业答案-Java语言程序设计判断题

Java对事件的处理是采用委托方式进行的,即将需要进行事件处理的组件委托给指定的事件处理器进行处理。 答案:正确 Java程序是由若干类定义组成的,类定义包括定义类头和定义类体。 答案:正确 类的修饰符有静态修饰符static、最终修饰符final、易失修饰符volatile和过度修饰符transient。答案:错误 子类拥有的成员数目大于等于父类拥有的成员数目。 答案:错误 Container类的add()方法将GUI组件添加到容器中。 答案:正确 Frame,Panel,Apple,Button 4种组件都属于容器组件。 答案:错误 在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象。 答案:错误 在Java的方法中定义一个常量要用const关键字。 答案:错误 一个程序里有且只能有一个公共类,它就是主类。 答案:正确 最终类不能派生子类。最终方法不能被覆盖。 答案:正确 在Applet中可以调用它的drawImage()方法直接画出一幅图像。 答案:错误 一个复选按钮实现的是“二选一”的结构;一个单选按钮实现的是“多选一”的结构。 答案:正确 当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。 答案:正确 final类中的属性和方法都必须被final修饰符修饰。 答案:错误 接口是特殊的类,所以接口也可以继承,子接口将继承父接口的所有常量和抽象方法。 答案:正确 新创建的Frame视窗对象,会自动显示在屏幕上。 答案:错误

applet可以运行在浏览器中。 答案:正确 Java源程序文件应以.java为后缀名保存,文件内包含几个类的定义就编译生成几个对应的字节码文件。 答案:正确 类头定义主要说明类的名字、父类名和接口名。 答案:错误 为了提高效率,Java中对多次出现的用双引号括起来的字符串字面量只存储一个对象。 答案:正确 Java的各种数据类型所占用的内存长度与具体软硬件环境有关。 答案:错误 有的类定义时可以不定义构造函数,所以构造函数不是必须的。 答案:错误 在Java的方法中定义一个常量要用final关键字。 答案:正确 一个Java类可以有多个父类。 答案:错误 在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语句,若多个catch语句中的参数类型有继承关系,应该将父类放在前面的catch语句中,子类放在后面的catch语句中。 答案:错误 Applet和TextField都属于容器组件。 答案:错误 创建新的类对象使用关键字new,回收无用的类对象使用关键字free。 答案:错误 因为Java不支持多重继承,所以定义类时implements关键字后面只能说明一个接口名。 答案:错误 Applet可以在客户端的主机上创建新文件。 答案:错误 类及其属性、方法可以同时有一个以上的修饰符来修饰。 答案:正确 一个catch块也可以区分处理多个不同类型的异常,只要它们都是该catch块异常参数的子类或其本身。答案:正确 Java有垃圾回收机制,内存回收程序可在指定的时间释放内存对象。 答案:错误

C异常处理实现

C异常处理实现: setjmp和longjmp 此文为internet上选摘,过后我会用自己的理解补充此文。 ------------ 将对setjmp与longjmp的具体使用方法和适用的场合,进行一个非常全面的阐述。 另外请特别注意,setjmp函数与longjmp函数总是组合起来使用,它们是紧密相关的一对操作,只有将它们结合起来使用,才能达到程序控制流有效转移的目的,才能按照程序员的预先设计的意图,去实现对程序中可能出现的异常进行集中处理。 与goto语句的作用类似,它能实现本地的跳转 这种情况容易理解,不过还是列举出一个示例程序吧!如下: void main( void ) { int jmpret; jmpret = setjmp( mark ); if( jmpret == 0 ) { // 其它代码的执行 // 判断程序远行中,是否出现错误,如果有错误,则跳转! if(1) longjmp(mark, 1); // 其它代码的执行 // 判断程序远行中,是否出现错误,如果有错误,则跳转! if(2) longjmp(mark, 2); // 其它代码的执行 // 判断程序远行中,是否出现错误,如果有错误,则跳转! if(-1) longjmp(mark, -1); // 其它代码的执行 } else { // 错误处理模块 switch (jmpret) { case 1: printf( "Error 1"n");

break; case 2: printf( "Error 2"n"); break; case 3: printf( "Error 3"n"); break; default : printf( "Unknown Error"); break; } exit(0); } return; } 上面的例程非常地简单,其中程序中使用到了异常处理的机制,这使得程序的代码非常紧凑、清晰,易于理解。在程序运行过程中,当异常情况出现后,控制流是进行了一个本地跳转(进入到异常处理的代码模块,是在同一个函数的内部),这种情况其实也可以用goto语句来予以很好的实现,但是,显然setjmp与longjmp的方式,更为严谨一些,也更为友善。程序的执行流如图17-1所示。

java异常处理试题及答案

异常处理练习题 一、选择题 1.java中用来抛出异常的关键字是 (C) A、try B、catch C、throw D、finally 2.关于异常,下列说法正确的是(A) A、异常是一种对象 B、一旦程序运行,异常将被创建 C、为了保证程序运行速度,要尽量避免异常控制 D、以上说法都丌对 3.(A)类是所有异常类的父类。 A、Throwable B、Error C、Exception D、AWTError 4.java语言中,下列哪一子句是异常处理的出口(C) A、try{…}子句 B、catch{…}子句 C、finally{…}子句 D、以上说法都丌对 5.下列程序的执行,说法错误的是 (C) public class MultiCatch { public static void main(String args[]) { try { int a=args.length; int b=42/a; int c[]={1}; c[42]=99; System.out.println(“b=”+b); } catch(ArithmeticException e) { System.out.println(“除0异常:”+e); } catch(ArrayIndexOutOfBoundsException e) { System.out.println(“数组超越边界异常:”+e); } } } A、程序将输出第15行的异常信息 B、程序第10行出错 C、程序将输出“b=42”

D、程序将输出第15和19行的异常信息 6.下列程序的执行,说法正确的是(D) class ExMulti { static void procedure() { try { int c[]={1}; c[42]=99; } catch(ArrayIndexOutOfBoundsException e) { System.out.println(“数组超越界限异常:”+e); } } public static void main(String args[]) { try { procedure(); int a=args.length; int b=42/a; System.out.println(“b=”+b); } catch(ArithmeticException e) { System.out.println(“除0异常:”+e); } } } A、程序只输出第12行的异常信息 B、程序只输出第26行的异常信息 C、程序将不输出异常信息 D、程序将输出第12行和第26行的异常信息 7.下面程序抛出了一个“异常”并捕捉它。请在横线处填入适当内容完成程序。class TrowsDemo { static void procedure() throws IllegalAccessExcepton { System.out.println(“inside procedure”); throw__new_____IllegalAccessException(“demo”);

JAVA实验四异常处理

实验四异常处理 实验目的 1、掌握异常的概念和Java 异常处理机制。 2、掌握异常的定义、抛出和捕捉处理。 实验内容与要求 1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果 import java.io.*; public class Ch31 { public static void main(String args[])throws IOException { int[] ko=new int[15]; int n,a; String x; BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter an integer:"); x=keyin.readLine(); n=Integer.parseInt(x); try { a=110/n; ko[15]=100; System.out.println("此描述无法执行!"); } catch(ArithmeticException e){ System.out.println("除数为0的错误"); } catch(ArrayIndexOutOfBoundsException f) { System.out.println("数组索引值大于数组长度的错误!"); } System.out.println("执行完catch的描述!!!"); } } 2.运行下面的程序,自己给出程序的运行结果。 import java.io.*; public class Ch32{ public Ch32(){ try{ int a[] = new int[2]; a[4] = 3; System.out.println("After handling exception return here?"); }catch(IndexOutOfBoundsException e){ System.err.println("exception msg:" + e.getMessage()); System.err.println("exception string:" + e.toString()); e.printStackTrace(); }finally{

《Java程序设计》上机实验报告 实验四 异常类的定义及处理

信息科学与工程学院《Java程序设计》上机实验报告 专业班级姓名学号 实验时间指导教师成绩 实验名称实验四异常类的定义及处理 实验目的1)了解异常处理方法。 2)熟悉并掌握常见异常的捕获方法。 3)熟悉JDK中已经定义的若干异常类的层次结构。 4)掌握自定义异常类的创建方法。 主要实验记录及个人小结 (包括部分实验源程序、调试结果及实验结果分析等)1.编写程序实现如下功能:生成并捕获到NegativeArraySizeException和IndexOutOfBoundsException类型的异常,并显示捕获到的异常信息。然后在此基础上生成并捕获到NullPointerException类型的异常,并显示捕获到的异常信息。 1)实验源程序: public class TestException { public static void main(String[] args){ outofBound(); arraySize(); nullPointer(); } static void arraySize(){ try{int p=-5; int test1[]=new int[p]; //不一定要是-5,只要小于0的就能捕获到无效数组长度的异常} } catch (NegativeArraySizeException e) { System.out.println("捕获异常:\n"+e); System.out.println(e.toString()); //把捕获的错误异常转变为字符串类型,传给println()方法,用以输入。 }finally{ System.out.println("捕获完成\n"); } } static void outofBound(){ try {int test2[]=new int[10]; test2[100]=1; //超出数组长度 } catch (ArrayIndexOutOfBoundsException e) { System.out.println("捕获异常:\n"+e); System.out.println(e.toString()); } finally{ System.out.println("捕获完成\n\n"); } } static void nullPointer(){ try {int test3[]=null; test3[1]=100; //空指针无法赋值 } catch (NullPointerException e) {

相关文档
最新文档