我有以下情况:
Class C{
mainCall(){
try{
//do something;
}catch(MyException e)
//doSomethingElse;
}
}
Class A{
methodOne() throws myException{
b.callMethodTwo();
}
}
class B{
callMethodTwo() throws myException{
try {
value = callService()//call some service
} catch(HttpClientErrorException | HttpServerErrorException e){
throw new MyException(e);
}
return value;
}
}
如果 callMethodTwo() 中发生一些异常(不是 HttpClientErrorException 或 HttpServerErrorException)。在这种情况下,流程是什么? 方法 C 中 mainCall() 中的 catch 部分会执行吗?我的代码中有近 5 个链式调用,但尝试在此处进行简化并生成了此场景。
最佳答案
如果方法callMethodTwo
中的语句value = callService();
抛出
HttpClientErrorException
或HttpServerErrorException
类型或其子类型的异常,它将被下面的catch
block 捕获。此catch
block 将抛出一个MyException
类型的新异常,该异常将冒泡到methodOne
,而methodOne
又冒泡到mainCall
最终将被catch
block 捕获。MyException
类型或其子类型的异常,它将从callMethodTwo
冒泡到callMethodOne
再到mainCall
最终将被catch
block 捕获。- 任何其他类型的异常,它都会从
callMethodTwo
冒泡到callMethodOne
到mainCall
到的调用方法mainCall
.
关于java - 异常处理错误场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44788986/