当前位置:文档之家› JAVA考试题库第六章

JAVA考试题库第六章

6-5.下列关于用户创建自己的异常描述中,错误的是(D) A.创建自己的异常应先创建一个异常类 B.为实现抛出异常,须在可能抛出异常的方法中书写 throw 语句 C.捕捉异常的方法是使用 try-catch-finally 语句格式 D.使用异常处理不会使整个系统更加安全和稳定
二 判断题
6-1.异常是一种特殊的运行错误的对象。(对) 6-2.异常处理可以使整个系统更加安全和稳定。(对) 6-3.异常处理是在编译时进行的。(错) 6-4.Java 语言中异常类都是 ng.Throwable 的子类。(对) 6-5.Throwable 类有两个子类:Error 类和 Exception 类。前者由系统保留,后者供应用程序使用。(对) 6-6.异常通常是指 Error 类和 Exception 类。(错) 6-7.Exception 类只有一个子类为 RuntimeException。(错) 6-8.在异常处理中,出现异常和抛出异常是一回事。(错) 6-9.运行时异常是在运行时系统检测并处理的。(错) 6-10.使用 try-catch-finally 语句只能捕获一个异常。(错) 6-11.捕获异常时 try 语句后面通常跟有一个或多个 catch()方法用来处理 try 块内生成的异常事件。(对) 6-12.使用 finally 语句的程序代码为该程序提供一个统一的的出口。(对) 6-13.抛出异常的方法说明中要加关键字 throws,并在该方法中还应添加 throw 语句。(对) 6-14.创建异常类时要给出该异常类的父类。(对) 6-15.如果异常类没有被捕获将会产生不正常的终止。(对) 三 分析程序的输出结果
6-1.Exer6_1.java public class Exer6_1 { public static void main(String args[] )
{ int x=10,y=0; int z=x/y; System.out.println(“z=“+z);
} } 该程序运行后,输出结果如图所示:
(1) 数组下标越界异常 ArrayIndexOutOfBoundsException 类型。例如, char ch[]=new char[5]; ch[5]='m';//产生该类型异常
(2) 对象转换异常 ClassCastException 类型。 例如,将对象 a1 转换为对象 a2 时,如果 a1 和 a2 不是同类,并且 a1 也不是 a2 的子类对
D:\JAVA\XT>java Exer6_3 正常:d=16 异常处理结束!
异常:ng.ArithmeticException:/by zero 异常处理结束!
正常:d=12 异常处理结束!
异常:ng.ArrayIndexOutOfBoundsExcepiton:3 异常处理结束!
D:\JAVA\XT>java Exer6_1 Exception in thread”main”ng.ArithmeticException:/by zero
At Exer6_1.main<Exer6_1.java:6> 6-2.Exer6_2.java public class Exer6_2 {
6-4 Exer6_4.java public class Exer6_4 {
public static void Test() {
int a[]=new int[3]; for(int i=0;i<=a.length;i++) {
try {
a[i]=i+5; System.out.println("\t 正常:a["+i+"]="+a[i]); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("\t 异常:+e.toString()"); throw e; } } } public static void main(String args[]) { try { Test(); } finally { System.out.println("\t 异常处理结束!\n") } } } 运行该程序后,输出结果如图:
D:\JAVA\XT>java Exer6_4 正常:a[0]=5 正常:a[1]=6 正常:a[2]=7 异常:ng.ArrayIndexOutOfBoudsException: 3 异常处理结束!
Exception in thread “main” ng.ArrayIndexOutOfBoundsExcepiton:3 at Exer6_4.Test<Exer6_4.java:10> at Exer6_4.main<Exer6_4java:24>
第六章 异常和异常处理
一 选择题
6-1.下列关于异常的描述中,错误的是(B) A.异常是一种经过修正后程序仍可执行的错误 B.异常是一种程序在运行中出现的不可恢复执行的错误 C.不仅 Java 语言有异常处理,C++语言也有异常处理 D.出现异常不是简单结束程序,而是执行某种处理异常的代码,设法恢复程序的执行
运行该程序后,输出如图所示
D:\JAVA\XT>java Exer6_2 正常:d=16 异常处理结束!
算术异常! 异常处理结束!
正常:d=12 异常处理结束!
下标越界异常! 异常处理结束!
6-3 Exer6_3.java public class Exer6_3 { public static void main(String args[]) { int array1[]={6,0,8}; for(int i=0;i<=array1.length;i++) { try { int d=100/array1[i]; System.out.println("\t 正常:d="+d); } catch(RuntimeException e) { System.out.println("\t 异常:"+e.toString()); } finally { System.out.println("\t 异常处理结束!\n"); } } } } 运行该程序后,输出结果如图所示:
自定义异常出现的次数:2 myException:自定义异常
自定义异常出现的次数:3 myException:自定义异常
5.简单回答题 6-1 检测异常事件必须使用什么语句?
答:try 语句 6-2 catch()方法的作用是什么?该方法用户能否调用?
答: 用来处理 try 块中检测出的异常事件。 6-3 catch()方法中异常类型应与什么相符?
6-4.下列关于抛出异常的描述中,错误的是(D) A.捕捉到发生的异常可在当前方法中处理,也可以抛到调用该方法的方法中处理 B.在说明要抛出异常的方法时应加关键字 throw<异常列表> C.<异常列表>中可以有多个用逗号分隔的异常 D.抛出异常的方法中要使用下述抛出异常语句:throw<异常名>;其中,<异常名>是异常类的类名
象时,则产生该类型异常。
(3) 引用空对象的变量和方法时产生 NullPointerException 异常类型。例如, int ar[]=null; System.out.println(ar.length);//产生该类异常
(1) 关于数组下标越界异常 ArrayIndexOutOfBoundsException 请参照本书本章例 6.1 的程序,请读 者自行编写。
Object obj=new Object(); int arr[]=(int[])(obj); } } (3) 编写处理异常程序如下: public class pro6_2 { public stati[]) { try{ int ar[]=null; System.out.println(ar.length); } catch(NullPointerException e) { System.out.println("Exception:"+e); } } } 运行该程序后,输出显示结果如下:
答:与生成的异常事件类型相符。 6-4 异常示被捕获到将会出现什么现象?
答:try 语句后边的惯常处理代码将不被执行,通常使用 finally 语句提供一个统一出口。 6-5 在一个 try 语句的程序代码块中可以捕获多个异常吗?
答:可以 6-6 使用 throw 语句抛出的是类型还是对象?
答:抛出的是对象。 6-7 捕获到的异常还可以再抛出吗?
public static void main(String args[]) {
int array1[]={6,0,8}; for(int i=0;i<array1.length;i++) {
try {
int d=100/array[i]; System.out.println(“\t 正常:d=“+d); } catch(ArithmeticException e) { System.out.println("\t 算术异常"); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("\t 下标越界异常"); } finally { System.out.println("\t 异常处理结束!\n"); } } } }
(2) 下面关于对象转换的例子。程序内容如下:
public class pro6_1 { public static void main(String args[]) {
相关主题