0

我使用 @ControllerAdvice 在我的 Spring Boot 控制器中捕获异常。在 @ExceptionHandler 中,我可以手动指定有限数量的异常及其状态代码。

我的问题是如何处理所有其他异常及其状态?

我可以使用它们的状态指定一些异常,如下所示:

@ExceptionHandler(MethodArgumentNotValidException.class)
 public ResponseEntity<Object> argNotValidExceptionHandler(MethodArgumentNotValidException ex){
    String localizeMessage = ex.getLocalizeMessage();

    ErrorMessage errorMessage = new ErrorMessage(LocalDateTime.now(), localizeMessage);

    return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errorMessage);
}

因为我想捕获所有异常,所以我似乎应该在@ExceptionHandler 中另外指定具有状态 INTERNAL_SERVER_ERROR 的 Exception.class。

此时,即使有 4** 状态,我也会为所有其他异常获得状态 500。

如何从每个异常中生成正确的状态代码以将其发送给客户端?

4

1 回答 1

0

您可以创建自定义异常类,并在定义这些自定义异常类时,配置在发生此异常时应发送的 http 状态代码。因此,当您在异常处理程序中捕获此异常时,您可以获取应从异常返回给用户的 http 状态代码并发送相同的状态代码。

于 2019-05-23T20:17:13.160 回答