我试图了解多个 catch 语句在 Java 中的工作原理。在文档中,他们说不允许在 catch 语句中使用相关类型。
在这里,我有一个我正在玩的小样本:
class a extends Exception{}
class b extends RuntimeException{}
public class test{
public static void main(String[] args){
try {
System.out.println(new a() instanceof Exception);
System.out.println(new b() instanceof Exception);
throw new a();
}catch(a | b e) {
System.out.println(e.getStackTrace());
}
}
}
Run Code Online (Sandbox Code Playgroud)
这两个类都是 Exception 的实例。首先,一个是明显的方式,第二个继承自 RuntimeException 和 RuntimeExeption 继承 Exception。
那么为什么要编译这段代码呢?不应该例外a盖也例外b?谢谢
通过related types我相信他们指的是关系,是延伸(或子类)的关系。所以在你的情况下,你有:
Exception
??? a
??? RuntimeException
??? b
Run Code Online (Sandbox Code Playgroud)
a 是 Exception 的子类
b 是 RuntimeException 的子类,它是 Exception 的子类
a 不是 b 的子类 AND b 不是 a 的子类
因此,增强的捕获块可以捕获 a 和 b。
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |