Java 中什么是无法到达的 catch 块?
javaobject oriented programmingprogramming更新于 2025/5/22 7:08:17
在任何情况下控件都无法到达的语句块可以称为无法到达的块。Java 不支持无法到达的块。提到Exception 类的 catch 块应该且必须始终位于最后一个 catch 块,因为Exception 是所有异常的超类。当我们保留多个 catch 块时,catch 块的顺序必须从最具体到最通用。即,Exception 的子类必须先出现,超类随后出现。如果我们先保留超类,后保留子类,则编译器将抛出无法到达的 catch 块错误。
语法
try {
// 语句
} catch(Exception e) {
System.out.println(e);
} catch(NumberFormatException nfe) { //无法访问的块。Java 不支持,会导致错误。
System.out.println(nfe);
}
如果以下两个条件都为真,则编译器认为 catch 子句可到达
- try 块中抛出的已检查异常可分配给 C 的参数。
- 没有先前的 catch 子句,其参数类型等于或不是 C 的参数类型的超类型
如果以下两个条件都为真,则编译器认为 catch 子句可到达,但可能无法到达
- catch 子句参数类型 E 不包括任何未检查异常。
- try 块中抛出的所有异常(其类型为 E 的(严格)子类型)都已由先前的 catch 子句处理。
示例
public class UnreachableBlock{
public static void main(String[] args) {
try {
int i = Integer.parseInt("abc"); //此语句抛出 NumberFormatException
} catch(NumberFormatException nfe) {
System.out.println("This block handles NumberFormatException");
} catch(Exception e) {
System.out.println("This block handles all exception types");
} catch (Throwable t) {
System.out.println("Throwable is super class of Exception");
}
}
}
输出
This block handles NumberFormatException
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

