在链式异常中找不到符号

Cannot find symbol in the chained exception

在下面的程序中,当我们尝试获取 main exception 意味着导致程序第一个异常的异常时,它会给出类似这样的错误:cannot find symbol : e.getCause(); 但在删除此语句后 System.out.println("Main Cause : " + e.getCause()); 我们成功得到第一个异常。

class chain_demo {
    static void demo() {
        //create an exception
        ArithmeticException e = new ArithmeticException("top Module");

        //cuase an exception
        e.initCause(new NullPointerException("Cause"));

        //throw exception
        throw e;
    }

    public static void main(String args[]) {
        try {
            demo();
        }
        catch(ArithmeticException e) {
            //display top_level exception
            System.out.println("Cautch : " + e);
        }

        //display cause exception
        //getting error here
        System.out.println("Main Cause : " + e.getCause());
    }
}

所以,我怎样才能得到原因异常。

变量e范围仅限于catch块 移动

System.out.println("Main Cause : " + e.getCause());

在 catch 块内例如

   try {
        demo();
    }
    catch(ArithmeticException e) {
        //display top_level exception
        System.out.println("Cautch : " + e);
        System.out.println("Main Cause : " + e.getCause());
    }