java - 异常处理错误场景

标签 java spring exception httpexception

我有以下情况:

  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(); 抛出

  1. HttpClientErrorExceptionHttpServerErrorException 类型或其子类型的异常,它将被下面的 catch block 捕获。此 catch block 将抛出一个 MyException 类型的新异常,该异常将冒泡到 methodOne,而 methodOne 又冒泡到 mainCall 最终将被 catch block 捕获。
  2. MyException 类型或其子类型的异常,它将从 callMethodTwo 冒泡到 callMethodOne 再到 mainCall 最终将被 catch block 捕获。
  3. 任何其他类型的异常,它都会从 callMethodTwo 冒泡到 callMethodOnemainCall 的调用方法mainCall.

关于java - 异常处理错误场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44788986/

相关文章:

java - 如何使用java访问名称中包含空格字符的文件?

java equal 和 == 混淆

java - 如何将 Hazelcast 与 Hbase 连接?

java - 将十六进制字符串转换为 Long 时出现 NumberFormatException

java - JAX-RS 和 Spring Security @PreAuthorize 异常处理

java - 如何从 ActiveMQ 队列创建 Spring Reactor Flux?

java - 在 Java 中抛出异常时是否有理由进行强制转换?

java - @DateTimeFormatter 没有前导零只是 yyyy-MM-dd 作为我的 SQL Spring Boot

java - 用 Java 创建实时协作记事本

Spring ApplicationListener在webapp上被触发了两次