已检查和未检查的异常的实现

时间:2013-01-05 14:11:31

标签: java exception

这不是一个问题,而是它们如何在内部实施。编译器如何区分已检查的异常(例如,直接从Exception派生,但RuntimeException除外)和未检查的异常(例如从RuntimeException派生)。异常类定义中是否有一些特殊的标志,它们说明必须在try / catch块中放置哪些异常,或者Java编译器中是否有一些特定的规则(例如Java语言设计明确指定了是否检查了异常的类型)?< / p>

2 个答案:

答案 0 :(得分:2)

这是由 Java编译器强制执行的,并且在运行时时进行了双重检查:如果Throwable扩展RuntimeException或{{1那么它被认为是未经检查的;所有其他人都经过检查。

在运行时,也会强制执行此检查(请记住,理论上您可以在运行时“构建”Java类。)

答案 1 :(得分:0)

所有未经检查的例外都是来自班级RuntimeException或班级Error的后续广告。所有其他人都被检查。 例如,使用反射,您始终可以检测此特定类当前异常的哪个类是超类。这与Java编译器检测其类型的方式相同。