捕获异常时,为什么在catch中要注意异常层级关系?须要注意哪些问题?
- 注意,catch中必定要注意层级关系。这里举一个简单的案例,就能够很好的理解为什么要注重层级问题呢!
- 技术博客大总结
public static void start() throws IOException, RuntimeException{
throw new RuntimeException("Not able to Start");
}
public static void main(String args[]) {
try {
start();
} catch (Exception e) {
e.printStackTrace();
} catch (RuntimeException e2) {
e2.printStackTrace();
}
}
复制代码
- 这段代码会在捕捉异常代码块的RuntimeException类型变量“e2”里抛出编译异常错误。由于Exception是RuntimeException的超类,在start方法中全部的RuntimeException会被第一个捕捉异常块捕捉,这样就没法到达第二个捕捉块,这就是抛出“exception java.lang.RuntimeException has already been caught”的编译错误缘由。