它是否像重新抛出同样的异常?

时间:2016-08-04 03:30:57

标签: java exception-handling

当我执行此代码时,我得到了#34;最后"

public class Tester {
    static void method() throws Exception {
        throw new Exception();
    }

    public static void main(String... args) {
        try {
            method();
        } catch (Throwable th) { 
            try {
                new Exception();
            } catch (Exception e) {
                System.out.print("Exception");
            } finally {
                System.out.print("finally");
            }
        }
    }
}

无法弄清楚执行的流程!!

2 个答案:

答案 0 :(得分:0)

如果代码finally块中存在或不存在异常,则将执行try块。

答案 1 :(得分:0)

上述代码的输出将是

finally

如果您想知道为什么输出不是

Exception finally

然后是因为在以下代码行中

try {
        new Exception();
    }

您只是声明了一个新的Exception对象,但您并没有真正抛弃它。

如果您希望输出为Exception finally,那么您必须通过放置throw new Exception();而不是new Exception();

来抛出该对象

然后代码如下:

public class HelloWorld{
    static void method() throws Exception{ throw new Exception(); }

    public static void main(String... args){
        try{method();}
        catch(Throwable th)
        {
            try{ throw new Exception(); }
            catch(Exception e){System.out.print("Exception");}
            finally{System.out.print("finally");}    
        }
    }
} 

<强>输出

Exceptionfinally