全部学科
Python全栈
python
NodeJS全栈
nodejs

JAVA异常处理专题测试

20 题 40 分钟 难度:★

考察知识点

本试卷涵盖以下核心知识点:

异常的概念与分类(4题)

  • 异常的定义(运行时不正常事件)
  • 异常体系结构(Throwable、Error、Exception)
  • Error与Exception的区别
  • 检查异常与非检查异常的区别

try-catch-finally语句(6题)

  • try-catch基本语法与作用
  • catch块匹配顺序(子类在前父类在后)
  • finally块的执行时机
  • finally与return的关系
  • finally唯一不执行的情况(System.exit())
  • 多个catch块的排列规则

throws关键字(2题)

  • throws声明异常的作用
  • throws声明多个异常
  • throws与检查异常的处理

throw关键字(2题)

  • throw与throws的区别
  • throw抛出异常后流程中断
  • throw抛出检查异常需要声明或捕获

自定义异常(3题)

  • 自定义异常继承选择(Exception或RuntimeException)
  • 自定义异常构造方法设计
  • 自定义异常命名规范(Exception后缀)

异常链与多重捕获(3题)

  • 异常链概念与cause设置
  • getCause()获取原始异常
  • Java 7多重捕获语法(catch(A | B e))
  • 多重捕获的异常不能有继承关系
💡 参考答案在文末
判断题
1

多重捕获catch(A | B e)中,A和B不能有继承关系。

A

B

单选题
2

throws可以声明多个异常吗?

A

只能声明一个异常

B

可以声明多个异常,用逗号分隔

C

只能声明Exception

D

不能声明RuntimeException

3

以下代码会编译成功吗?

Java
public void readFile() throws IOException {
    FileReader fr = new FileReader("test.txt");
}
A

编译成功

B

编译失败,需要try-catch

C

编译失败,throws不能用在方法上

D

编译失败,缺少return

4

以下哪个是检查异常?

A

NullPointerException

B

ArrayIndexOutOfBoundsException

C

IOException

D

ArithmeticException

5

Java中异常是指什么?

A

程序编译时的错误

B

程序运行时发生的不正常事件

C

程序逻辑错误

D

语法错误

6

多个catch块的排列顺序应该遵循什么原则?

A

随意排列,无顺序要求

B

从具体异常到通用异常(子类在前,父类在后)

C

从通用异常到具体异常

D

按字母顺序排列

7

finally块什么时候执行?

A

只有异常发生时执行

B

只有异常未发生时执行

C

无论是否发生异常都会执行

D

只有catch块执行后才执行

8

try块中有return语句,finally块还会执行吗?

A

不执行,直接返回

B

会执行,在return之前执行

C

会执行,在return之后执行

D

取决于异常是否发生

9

什么情况下finally块不会执行?

A

catch块抛出异常

B

try块有return

C

System.exit()在try或catch中调用

D

程序正常运行

10

Error和Exception的主要区别是什么?

A

Error可以被捕获处理,Exception不能

B

Error是严重问题程序无法处理,Exception可以被捕获处理

C

没有区别

D

Error是编译时错误,Exception是运行时错误

11

以下代码会发生什么?

Java
try {
    throw new NullPointerException();
} catch (Exception e) {
    System.out.println("Exception");
} catch (NullPointerException e) {
    System.out.println("NullPointerException");
}
A

输出NullPointerException

B

输出Exception

C

编译错误

D

无输出

12

try-catch语句的作用是什么?

A

定义异常

B

捕获和处理异常

C

抛出异常

D

声明异常

13

throw和throws的区别是什么?

A

没有区别

B

throw抛出异常对象,throws声明可能抛出的异常

C

throw用在方法签名,throws用在代码中

D

throw声明异常,throws抛出异常

14

以下代码的输出结果是什么?

Java
public void test() {
    throw new RuntimeException("Error");
    System.out.println("After throw");
}
A

输出After throw

B

抛出RuntimeException,不输出After throw

C

编译错误

D

无输出无异常

15

自定义非检查异常应该继承哪个类?

A

Exception

B

RuntimeException

C

Error

D

Throwable

16

自定义异常类通常需要提供哪些构造方法?

A

只需要无参构造方法

B

无参构造方法和带String参数的构造方法

C

只需要带参数的构造方法

D

不需要构造方法

17

如何为异常设置原始异常(cause)?

A

throw e.setCause(original)

B

使用带Throwable参数的构造方法或initCause()

C

使用setMessage()

D

自动设置

18

Java异常体系的根类是什么?

A

Exception

B

Error

C

Throwable

D

RuntimeException

多选题
19

Java 7引入的异常处理新特性有哪些?

A

多重捕获catch(A | B e)

B

try-with-resources自动关闭资源

C

异常链initCause()

D

final重抛

填空题
20

NullPointerException属于____________(非检查异常),编译器不强制要求处理。

参考答案
1.正确 2.B 3.A 4.C 5.B 6.B 7.C 8.B 9.C 10.B 11.C 12.B 13.B 14.B 15.B 16.B 17.B 18.C 19.A; B 20.RuntimeException
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 JAVA常用工具类专题测试
下一套试卷 → JAVA性能调优实战专题测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码