异常处理错误场景
exceptions handling error scenario
我有以下场景:
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 个链调用,但我试图在这里简化并生成这个 sceario。
处理异常以外的异常不会进入该 catch 块,因此 callMethodTwo 不会抛出 myException。
执行并验证它。你永远不会忘记。 callMethodTwo() 将抛出未捕获的异常。 A.methodOne() 会把同样的东西扔回去。 C.catch 会抓住它。
如果方法 callMethodTwo
中的语句 value = callService();
抛出
- 类型
HttpClientErrorException
或HttpServerErrorException
或其子类型的异常,它将被下面的catch
块捕获。这个 catch
块将抛出一个类型为 MyException
的新异常,它会冒泡到 methodOne
,然后又冒泡到 mainCall
,最终会被catch
块。
- 类型
MyException
或其子类型的异常,它将从 callMethodTwo
冒泡到 callMethodOne
再到 mainCall
最终被 catch
块。
- 任何其他类型的异常,它将从
callMethodTwo
冒泡到callMethodOne
到mainCall
到mainCall
的调用方法。
您还没有在 C mainCall() 中调用 A/B 的任何方法。您应该有一些可以抛出 MyException 的代码,然后只有您可以在那里捕获。
我有以下场景:
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 个链调用,但我试图在这里简化并生成这个 sceario。
处理异常以外的异常不会进入该 catch 块,因此 callMethodTwo 不会抛出 myException。
执行并验证它。你永远不会忘记。 callMethodTwo() 将抛出未捕获的异常。 A.methodOne() 会把同样的东西扔回去。 C.catch 会抓住它。
如果方法 callMethodTwo
中的语句 value = callService();
抛出
- 类型
HttpClientErrorException
或HttpServerErrorException
或其子类型的异常,它将被下面的catch
块捕获。这个catch
块将抛出一个类型为MyException
的新异常,它会冒泡到methodOne
,然后又冒泡到mainCall
,最终会被catch
块。 - 类型
MyException
或其子类型的异常,它将从callMethodTwo
冒泡到callMethodOne
再到mainCall
最终被catch
块。 - 任何其他类型的异常,它将从
callMethodTwo
冒泡到callMethodOne
到mainCall
到mainCall
的调用方法。
您还没有在 C mainCall() 中调用 A/B 的任何方法。您应该有一些可以抛出 MyException 的代码,然后只有您可以在那里捕获。