首页 > 解决方案 > 有没有办法处理从 Spring 中的自定义异常处理程序内部抛出的异常?

问题描述

假设一个 Spring Boot (2.1) 有一个@RestControllerAdvice处理一些自定义异常的。

如果在异常处理程序调用期间抛出另一个异常怎么办。有没有办法处理它,而不是让 Spring 发送自己的响应主体,这可能看起来像:

{
    "timestamp": "2020-01-31T03:03:55.228+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "account: 2",
    "path": "/myendpoint/2"
}

@RestControllerAdvice
public class MyExceptionHandler {

  @Autowired
  private MyOtherService otherService;

  @ExceptionHandler(SomeCustomException.class)
  public ResponseBody<Object> handleCustomException(SomeCustomException ex) {
    otherService.doSomething(); // This might throw, say, a RuntimeException

    return new ResponseBody<>(/* ... */);
  }
}

标签: javaspringspring-bootspring-mvcexception

解决方案


ExceptionHandler 是一个故障屏障,因此您需要在不抛出另一个异常的情况下处理该异常。


推荐阅读