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有什么问题吗?清楚的答案。非常感谢。