如何捕获catch子句中抛出的异常?

时间:2015-04-07 23:10:33

标签: java exception try-catch finally clause

try {

        throw new SomeException();

    }

    catch (SomeException e) {

        System.out.println("reached once");
        throw e;
    }

    catch (Exception e) {
        System.out.println("reached twice");
    }

此代码仅显示“到达一次”,即使在第一个catch子句中再次抛出异常。如何修复这两个catch子句呢?

PS:上面的代码是我的一般性问题,我不得不将它应用于一个更大的代码,其中包含大约5或6个捕获子句,这些子句捕获不同的异常,但最后,在循环的某个点上我需要再次抛出异常。

2 个答案:

答案 0 :(得分:2)

只需在catch中添加另一个try catch。

try {
    try {

        throw new NullPointerException();

    } catch (NullPointerException e) {
        System.out.println("reached once");

        throw e;
    }
} catch (SomeOtherException ex) {}

答案 1 :(得分:0)

你必须使用try / catch块来覆盖所有可以抛出异常的代码

    try {

            throw new NullPointerException();
        }
        catch (NullPointerException e) {
            System.out.println("reached once");
            try{
                throw e;
            }
            catch (Exception ex) {
                System.out.println("reached twice");
            }
        }