2

在 Java 中,编译器如何识别存在已检查异常?我的意思是它是如何识别它的?

4

2 回答 2

5

就在文档中:

Java 编程语言的编译器在编译时检查程序是否包含已检查异常的处理程序,通过分析哪些已检查异常可能由方法或构造函数的执行引起。对于每个可能结果的检查异常,方法(第 8.4.6 节)或构造函数(第 8.8.5 节)的 throws 子句必须提及该异常的类或该异常类的超类之一。这种编译时检查是否存在异常处理程序旨在减少未正确处理的异常数量。

未经检查的异常类是类 RuntimeException 及其子类,以及类 Error 及其子类。所有其他异常类都是检查异常类。Java API 定义了许多异常类,包括选中的和未选中的。程序员可以声明额外的异常类,包括已检查和未检查的。有关异常类层次结构和 Java API 和 Java 虚拟机定义的一些异常类的描述,请参见 §11.5。

所以基本上它会查看代码,如果遇到异常,则查找异常的继承层次结构以确定它是检查还是未检查。

于 2012-05-14T06:02:21.790 回答
1

所有检查的异常都有一个基类Exception,而非检查的异常扩展RuntimeExceptionError

于 2012-05-14T06:00:06.183 回答