我有以下内容:
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
。
我该怎么做?
答案 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;
}
}