我试图在最后一个块中抛出相同的重复,而先前抛出的expcetion没有被捕获。我希望我们有两个Excpetion
类型的对象被抛出。因为我们需要两个catch子句如下:
public static void main(String[] args) {
try {
try {
try {
throw new Exception();
} finally {
System.out.println("finally");
throw new Exception();
}
} catch (Exception ex) {
System.out.println("catch");
} finally {
System.out.println("finally");
}
} catch (Exception ex) {
System.out.println("catch");
}
System.out.println("finish");
}
但该节目打印:
finally
catch
finally
finish
也就是说,没有输入第二个catch子句。为什么呢?
答案 0 :(得分:3)
当你在finally块中抛出异常时,第一个异常会以静默方式消失。
如果finally块因为S而突然完成,则尝试 陈述突然完成,原因是S。
你是如何进入finally块的。如果您通过抛出异常来输入它,则不能再捕获异常。
答案 1 :(得分:0)
当你从finally块中抛出异常时,它会抑制从try块抛出的任何异常,因此只能捕获一个异常。
第一个捕获cluase已经捕获了该异常,因此第二个没有什么可抓住的。
答案 2 :(得分:0)
您的第一个try-catch
已经尝试抓住它,因为任何特殊原因,额外的try
块不存在。如果您尝试抛出更多例外情况,我们会发现您会收到语法错误Unreachable code
基本上,将其保存在一个try
块中