Java异常处理练习题及答案

以下是一些Java异常处理练习题,测试你对异常处理的理解。

1. 下面的程序的执行结果是()

public class Test {
public static void main(String [ ] args) {
new Test( ).test( );
}
public void test( ){
try {
System.out.print ('try');
} catch (ArrayIndexOutOfBoundsException e) {
System.out.print ('catch1');
} catch (Exception e) {
System.out.print ('catch2');
} finally {
System.out.println ('finally');
}
}
}

A. try finally B. try catch1 finally C. try catch2 finally D. finally

答案:C

解释: 该程序中test()方法没有抛出ArrayIndexOutOfBoundsException,所以第一个catch块不会被执行。当程序执行到System.out.print('try');时,会抛出一个Exception,所以第二个catch块会被执行。最后,finally块总是会被执行。

2. 以下代码的执行结果正确的是 ()

public class Animal {
public static void main(String[] args) {
try {
int num1 = 8;
int num2 = 0;
int result = num1 / num2;
System.out.println(result);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println('catch');
} catch (Exception e) {
System.out.println('catch2');
} finally {
System.out.println('finally');
}
}
}

A. 0,finally B. catch,finally C. catch2,finally D. finally

答案:B

解释: 该程序中,num1 / num2会发生ArithmeticException,该异常是Exception的子类。因此,程序会进入catch2块并输出catch2,之后进入finally块并输出finally

3. 在java中有如下方法:

public int count(int i) throws Exception{
if(i<0){
throw new Exception('参数不正确');
}
return i;
}

对该方法调用正确的是() A. public void useCount(){ count(8); } B. public void useCount() throws ArithmeticException { count(8); } C. public void useCount(){ try { count(8); } catch (Exception e) { e.printStackTrace(); } } D. public void useCount(){ try { count(8); } }

答案:C

解释: count()方法声明会抛出Exception,因此调用该方法需要使用try...catch块来捕获异常。选项C正确地使用了try...catch块来处理可能发生的异常。

4. 在Java中,尝试对null对象操作时,会产生( )类型的异常 A. ArithmeticException B. NullPointerException C. IOException D. ClassNotFoundException

答案:B

解释: NullPointerException是Java中专门用于处理对空对象进行操作的异常。

5. 在Java中,以下程序编译运行后的输出结果是( )。

public class Test{
public void add(int i) {
if(i == 0)
throw new NullPointerException();
System.out.println('add出现异常');
}
public static void main(String[] args) {
Test t = new Test();
try {
t.add(0);
System.out.println('add方法返回');
}catch(Exception e) {
System.out.println('捕获异常');
}
}
}

A. add出现异常 B. add出现异常 add方法返回 C. add方法返回 捕获异常 D. 捕获异常

答案:B

解释: 程序中,当i为0时,add()方法会抛出NullPointerException,该异常被catch块捕获,并输出捕获异常。然而,add()方法中的System.out.println('add出现异常');语句是在抛出异常之前执行的,所以会先输出add出现异常

6. 在Java中,以下代码段的输出结果为()

public static void main(String[]args){
int[] nums=new int[3];
for(int i=1;i<nums.length;i++){
nums[i]=i*2;
}
for(int i=0;i<nums.length;i++){
System.out.print(nums[i]);
}
}

A. 024 B. 246 C. 运行时出现异常 D. 编译错误

答案:A

解释: 该代码段中,数组nums的长度为3,循环变量i从1开始遍历到小于nums.length,即遍历了数组的下标1和2。所以,nums[0]的值为0,nums[1]的值为2,nums[2]的值为4。输出结果为024。

7. 在Java中,以下代码段的输出结果为( )。

public static void main(String[] args) {
String[] girls = new String[4];
girls[0] = 'alise';
girls[1] = 'mary';
girls[2] = 'keirly';
for(int i = 1; i<girls.length ; i++){
System.out.print(girls[i]+',');
}
}

A. alise,mary,keirly B. 运行时出现NullPointerException异常 C. alise,mary,keirly,null, D. mary,keirly,null,

答案:D

解释: 该代码段中,数组girls的长度为4,但只初始化了前3个元素,girls[3]的值为null。循环遍历从下标1开始,所以输出结果为mary,keirly,null,

8. 以下代码输出结果为()

public class Test{
public static void main(String []args){
List<Integer> list = new ArrayList<Integer>();
list.add(123);
list.add('abc');
list.remove(1);
System.out.println(list.get(0));
}
}

A. 编译时发生错误 B. 正确运行,输出:123 C. 正确运行,输出 'abc' D. 运行时引发异常

答案:D

解释: 该代码段中,list.add('abc')语句是错误的,因为List<Integer>只能添加Integer类型的元素。编译器会报错,所以程序不能运行。

9. java中异常的顶层父类是 ( ) A. Throwable B. Exception C. Error D. Throws

答案:A

解释: Throwable是所有异常和错误的父类。Exception是可捕获的异常,Error是不可捕获的错误。Throws是关键字,用于在方法声明中声明可能抛出的异常。

10. 给定如下Java程序,这段程序编译运行后的输出结果是( )。

public class Test {
public static void aMethod() throws Exception {
try{
throw new Exception();
}finally{
System.out.print('Finally');
}
}
public static void main(String[] args) {
try{
aMethod();
}catch(Exception e) {
System.out.print('Exception');
}
System.out.print('Finished');
}
}

A. FinallyException B. Finally C. ExceptionFinallyFinished D. FinallyExceptionFinished

答案:A

解释: 该程序中,aMethod()方法会抛出Exceptionfinally块会执行并输出Finally。之后,catch块会捕获Exception并输出Exception。所以输出结果为FinallyException

注意: finally块无论是否发生异常都会执行,并且在finally块中抛出异常会导致catch块无法捕获该异常。

总结:

这套Java异常处理练习题涵盖了常见异常类型的处理方式和注意事项,希望可以帮助你更深入地理解Java异常处理机制。

请记住,异常处理是编写健壮和可靠的Java程序的关键,因为它可以帮助你处理程序中可能发生的错误,并防止程序崩溃。

如果你想了解更多关于Java异常处理的内容,请参考相关文档和教程。

Java异常处理练习题及答案 - 测试你的异常处理知识

原文地址: https://www.cveoy.top/t/topic/oazA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录