Java 在finally块中抛出异常
我试着在最后一个街区抛出同样的借口,而之前抛出的解释没有被抓住。我希望我们会抛出两个Java 在finally块中抛出异常,java,exception,Java,Exception,我试着在最后一个街区抛出同样的借口,而之前抛出的解释没有被抓住。我希望我们会抛出两个expetion类型的对象。因为我们需要两个catch条款,如下所示: public static void main(String[] args) { try { try { try { throw new Exception(); } finally { System.out
expetion
类型的对象。因为我们需要两个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子句。为什么?当您从finally块抛出异常时,它会抑制从try块抛出的任何异常,因此只有一个异常需要捕获
第一个catch cluase已经捕获了该异常,因此第二个没有要捕获的内容。当您在finally块中抛出异常时,第一个异常会自动消失 在房间里 如果finally块由于原因S而突然完成,则try 由于S的原因,语句突然完成
无论您是如何进入finally block,这都是事实。如果您是通过抛出异常输入的,则无法再捕获该异常。您的第一个
try catch
已在尝试捕获它,由于任何特定原因,额外的try
块不存在。如果您尝试抛出更多异常,您会注意到将出现语法错误,Unreachable code
基本上,把它放在一个
try
block中可能的重复的可能的重复的Java有什么问题吗?清楚的答案。非常感谢。