java考试题库第六章docx.docx
- 文档编号:28070560
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:15
- 大小:18.86KB
java考试题库第六章docx.docx
《java考试题库第六章docx.docx》由会员分享,可在线阅读,更多相关《java考试题库第六章docx.docx(15页珍藏版)》请在冰豆网上搜索。
java考试题库第六章docx
第六章异常和异常处理
一选择题
6・1.下列关于异常的描述中,错误的是(B)
A.异常是一种经过修正后程序仍可执行的错误
B.异常是一种程序在运行中出现的不可恢复执行的错误
C.不仅Java语言有异常处理,C++语言也有异常处理
D.岀现异常不是简单结束程序,而是执行某种处理异常的代码,设法恢复程序的执行
6・2.下列关于异常处理的描述中,错误的是(D)
A.程序运行时异常由Java虚拟机自动进行处理
B.使用try-catch-finally语句捕获异常
C.使用throw语句抛出异常
D.捕获到的异常只能用当前方法中处理,不能用其他方法中处理
6・3.下列关于try-catch-finally语句的描述中,错误的是(A)
A・try语句后面的程序段将给出处理异常的语句
B・catch()方法跟在try语句后面,它可以是一个或多个
C.catch()方法有一个参数,该参数是某种异常类的对彖
D・finally语句后面的程序段总是被执行的,该语句起到提供统一接口的作用
6・4.下列关于抛出异常的描述中,错误的是(D)
A.捕捉到发牛的异常可在当前方法中处理,也可以抛到调用该方法的方法中处理
B.在说明要抛出异常的方法吋应加关键字throw<异常列表〉
C.v异常列表〉中可以有多个用逗号分隔的异常
D.抛岀异常的方法中要使用下述抛出异常语句:
throw<异常名〉;其中,v异常名>是异常类的类名6・5.下列关于用户创建自己的异常描述中,错误的是(D)
A.创建自己的异常应先创建一个异常类
B.为实现抛出异常,须在可能抛出异常的方法中书写throw语句
C.捕捉异常的方法是使用try-catch-finally语句格式
D.使用异常处理不会使整个系统更加安全和稳定
二判断题
6・1.异常是一种特殊的运行错误的对象。
(对)
62异常处理可以使整个系统更加安全和稳定。
(对)
6・3.异常处理是在编译时进行的。
(错)
6-4.Java语言中异常类都是java.lang.Throwable的子类。
(对)
6-5.Throwable类有两个子类:
Enor类和Exception类。
前者由系统保留,后者供应用程序使用。
(对)6・6.异常通常是指Error类和Exception类。
(错)
6-7.Exception类只有一个子类为RuntimeExceptiono(错)
68在异常处理屮,出现异常和抛出异常是一回事。
(错)
6・9.运行时异常是在运行时系统检测并处理的。
(错)
6-10.使用try-catch-finally语句只能捕获一个异常。
(错)
6・11•捕获异常时try语句后面通常跟有一个或多个catch()方法用来处理try块内牛成的异常事件。
(对)6・12・使用finally语句的程序代码为该程序提供一个统一的的出口。
(对)
6・13.抛出异常的方法说明中要加关键字throws,并在该方法屮还应添加throw语句。
(对)
6・14.创建异常类时要给出该异常类的父类。
(对)
6J5.如果异常类没有被捕获将会产生不正常的终止。
(对)
三分析程序的输出结果
6・1.Exer6_l.java
publicclassExer6_l
publicstaticvoidmain(Stringargs[])
intx=10,y=0;
intz=x/y;
System.out.println(uz="+z);
}
}
该程序运行后,输岀结果如图所示:
D:
\JAVA\XT>javaExer6_l
Exceptioninthread"main^java.lang.ArithmeticException:
/byzero
AtExer6_l.main 6> 6・2.Exer6_2.java publicclassExer6_2 { publicstaticvoidmain(Stringargs[]) { intarray1[]={6,0,8}; for(inti=0;i { try { intd=100/array[i]; System.out.println(^\t正常: d="+d); }catch(ArithmeticExceptione) { System.out.println("\t算术异常”); }catch(ArrayIndexOutOfBoundsExceptione) { System.out.println("\t下标越界异常”); } finally { System.out.println("\t异常处理结束! \nH); 运行该程序后,输出如图所示 D: \JAVA\XT>javaExer6_2正常: d二16界常处理结束! 算术异常! 异常处理结束! 正常: d=12 异常处理结束! 下标越界异常! 异常处理结束! 6-3Exer6_3.java publicclassExer6_3 { publicstaticvoidmain(Stringargs[]) {〜 intarray1[]={6,0,8};for(inti=0;i<=array1.length;i++){ try { intd=100/arrayl[i];System.out.println("\t正常: d二"+d); 1catch(RuntimeExceptione){” System.out.println("\t异常': "+e.toString()); }finally { System.out.println(H\t异常处理结束! \nn);} } 运行该程序后,输岀结果如图所示: D: \JAVA\XT>javaExer6_3正常: d=16界常处理结朿! 异常: java.lang.ArilhmeticException: /byzero异常处理结束! 正常: d=12 异常处理结束! 异常: java.lang.ArrayIndexOutOfBoundsExcepiton: 3异常处理结束! 6-4Exer6_4.java publicclassExer6_4 { publicstaticvoidTest() { inta[]=newint[3]; for(inti=O;i<=a.length;i++) { try { a[i]=i+5; System.out.println("\t正常: a["+i+n]=,'+a[i]);} catch(ArrayIndexOutOfBoundsExceptione) { System.out.println(H\t异常: +e.toString()H);throwe; publicstaticvoidmain(Stringargs[]) { try { Test(); } finally { System.out.println("\t异常处理结束! \nH) } } 运行该程序后,输岀结果如图: D: \JAVA\XT>javaExer6_4 正常: alO]=5 正常: a[l]=6 正常: a[2]=7 异常: javaJang.AmiylndexOulOfBoudsExceplion: 3异常处理结束! Exceptioninthread"main9java.lang.AiTayIndexOutOfBoundsExcepiton: 3atExer6_4.Test 1()> atExer6_4.main 24> 6-5Exer6_5.java classmyExceptionextendsException { staticinta=0 myException(Strings) { super(s);a++; } Stringshow() { return11自定义异常出现的次数: ”+a; } } PublicclassExer6_5 { staticvoidTest()throwsmyException { myExceptione; e=newmyException(H自定义异常\n”);throwe; } Publicstaticvoidmain(Stringargsfl) { for(inti=0;iv3;i++) { try { Test(); 1 catch(myExceptione) { System.out.println(e.show()); System.out.println(e.toString); 运行该程序后,输岀结果如图所示: D: \JAVA\XT>javaExer6_5自定义异常出现的次数: 1myException: 自定义异常 自定义异常出现的次数: 2myException: 口定义异常 自定义异常出现的次数: 3myException: 自定义界常 5.简单回答题 6-1检测异常事件必须使用什么语句? 答: try语句 6-2catch()方法的作用是什么? 该方法用户能否调用? 答: 用来处理try块中检测出的异常事件。 6-3catch()方法中异常类型应与什么相符? 答: 与生成的异常事件类型相符。 6-4异常示被捕获到将会出现什么现象? 答: try语句后边的惯常处理代码将不被执行,通常使用finally语句提供一个统一出口。 6-5在一个try语句的程序代码块中可以捕获多个异常吗? 答: 可以 6-6使用throw语句抛出的是类型还是对象? 答: 抛出的是对象。 6-7捕获到的异常还可以再抛出吗? 答: 可以。 6-8Finally语句块中的代码何时被执行? 答: 在异常事件处理的方法catch()执行后执行。 6-9语句throw的作用是什么? 答: 抛出所检测到的异常。 6-10异常类Exception的父类是什么? 答: 是Throwable类。 6.编程题 6-1编程实现下述异常,并输出显示适当的错误信息。 (1)数组卜标越界异常ArraylndexOutOfBoundsException类型。 例如, charch[]=newchar[5]; ch[5]=W;〃产生该类型异常 (2)对象转换异常ClassCastException类型。 例如,将对象al转换为对象a2时,如果al和a2不是同类,并且al也不是a2的子类对彖时,则产生该类型异常。 (3)引用空对象的变量和方法时产生NullPointerException异常类型。 例如, intarf]=null; System.out.println(ar.length);〃产生该类异常 (1)关于数组下标越界异常ArraylndexOutOfBoundsException请参照本书本章例6.1的程序,请读者自行编写。 (2)下面关于对象转换的例子。 程序内容如下: publicclasspro6_l publicstaticvoidmain(Stringargs[]) { try{ M(); } catch(ClassCastExceptione) { System.out.println("对象转换异常”); } } staticvoidM()throwsClassCastException{ Objectobj=newObject();intarr[]=(int[])(obj); } } (3)编写处理异常程序如下: publicclasspro6_2 publicstaticvoidmain(Stringargs[]) { try{ intar[]=null; System.out.println(ar.length); } catch(NullPointerExceptione) { System.out.println("Exception: n+e); 运行该程序后,输出显示结果如下: Exception: java.Lang・NullPointerException. 6-2定义一个circle类,其屮有求面积的方法,当圆的半径小于0时,抛出一个自定义的异常。 编程实现之: 程序内容如下; classCircleextendsException { doubler; Circle() {} Circle(doublei) g;} publicdoublegetr() {returnr;} publicdoubleArea() return3.1415*r*r; publicclasspro6_3 { publicstaticvoidmain(Stringargs[]) {〜 Circlec=newCircle(-3.0); try { if(c.getr()<0) { Circleee=newCircle();throwee; } System.out.println(c.Area()); } catch(Circlee) { System.out.println("自定义异常: "+e); 运行该程序后,输出显示如下结果: 自定义异常: Circle 如果将语句 Circlec=newCircle(-3.0); 必为 Circlec=newCircle(3.0); 输出结果如何? 请读者上机试试。 6.5测试题 1.单选题 6・1下列关于异常和异常类的描述中,错误的是()o A.异常是某种异常类的对象 B.异常类代表一种异常事件 C.异常对象屮包含有发生异常事件的类型等重要信息 D.对待异常和处理就是简单地结束程序 6・2下列关于异常处理的描述中,错误的是()o A.程序运行时出现的异常是通过系统默认的异常处理程序进行处理的 B.在程序中可以使用try-catch语句捕捉异常和处理异常事件 C.对于捕获的异常只能在当前方法屮处理 D.使用throw语句可将异常抛出到调用当前方法的方法中处理 6・3下列关于用户创建自己的异常的描述中,错误的是()o A.为了保证系统的稳定性,用户可以创建自己的异常和异常类 B.创建的异常类必须是Exception类的子类 C.在创建的异常类的类体屮可以定义或重载其的属性和方法、 D.用户自定义的异常必须使用throw语句进行抛出 2.判断题 6-1异常不是致命错误。 6-2异常类Exception是Throwable类的子类,该类还派生岀许多子类。 6-3catch()方法是用来捕捉和处理异常的,可使用多个该方法,其异常类型的先后顺序是无关的。 6-4用户在创建自己的异常时,通常在通过throw语句抛出异常。 6-5finally语句的程序段无论发生异常事件与否,它都是被执行的。 3•分析程序的输出结果 6・1程序内容如下: publicclasstest6_1 { publicstaticvoidmain(Stringargsf]) { intarr[]={1,3,5,7,9}; inti=0; while(i<6) { try { System.out.println(arr[i++]+1); } catch(ArrayIndexOutOfBoundsExceptione) { System.out.println("T标越界”); } finally { System.out.println(nokn); 6・2程序内容如下: classmyExceptionextendsException{ myExcepiton(Strings) { super(s); publicclasstest6_2 { publicstaticvoidmain(Stringargs[]) { try { thrownewmyException("我自定义的异常”); } catch(myExceptione) { e.printStackTrace(); } } } 4.编程题 读者自己定义一种异常类,并编程捕捉某种异常,输出异常信息。 5.简答题 已知: 下列try-catch-finally语句块中v语句2>将会引起一个异常,试回答下述问题。 try{ v语句1> v语句2> v语句3> ) catch(<异常类名>el){・・・} catch(<异常类名>e2){…} finally {•・•} v语句4> (1)v语句3>会执行吗? (2)如果异常被捕捉了,finally语句被执行吗? (3)如果异常没被捕捉,finally语句被执行吗? (4)无论异常是否被捕捉,v语句4>都被执行吗?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 考试 题库 第六 docx