两次捕获相同的异常

时间:2015-07-24 13:36:21

标签: java exception try-catch

我有以下内容:

public void method(){

    try {
        methodThrowingIllegalArgumentException();
        return;
    } catch (IllegalArgumentException e) {
        anotherMethodThrowingIllegalArgumentException();            
        return;
    } catch (IllegalArgumentException eee){ //1
       //do some
       return;
    } catch (SomeAnotherException ee) {
       return;
    }
}

Java不允许我们两次捕获异常,因此我们在//1得到了compile-rime错误。但我需要做的就是我尝试做的事情:

首先尝试使用methodThrowingIllegalArgumentException()方法,如果它失败了IAE,请尝试anotherMethodThrowingIllegalArgumentException();,如果它也因IAE失败,请执行一些并返回。如果它失败,只需返回SomeAnotherException

我该怎么做?

1 个答案:

答案 0 :(得分:6)

如果anotherMethodThrowingIllegalArgumentException()块内的catch调用可能会抛出异常,则应该将其捕获,而不是作为“顶级”try语句的一部分:

public void method(){

    try{
        methodThrowingIllegalArgumentException();
        return;
    catch (IllegalArgumentException e) {
        try {
            anotherMethodThrowingIllegalArgumentException();            
            return;
        } catch(IllegalArgumentException eee){
            //do some
            return;
        }
    } catch (SomeAnotherException ee){
       return;
    }
}