【发布时间】:2021-07-20 13:06:15
【问题描述】:
Spring5 引入了 ResponseStatusException,这让我陷入了两难的境地,即我可以在什么情况下使用 ResponseStatusException 和 ControllerAdvice,因为它们非常相似。
谁能帮我解决这个问题。 提前致谢。
【问题讨论】:
标签: exception error-handling response httpresponse controller-advice
Spring5 引入了 ResponseStatusException,这让我陷入了两难的境地,即我可以在什么情况下使用 ResponseStatusException 和 ControllerAdvice,因为它们非常相似。
谁能帮我解决这个问题。 提前致谢。
【问题讨论】:
标签: exception error-handling response httpresponse controller-advice
让我们先了解什么是 ResponseStatusException 和 ControllerAdvice
ResponseStatusException 是@ResponseStatus 的编程替代方案,是用于将状态代码应用于 HTTP 响应的异常的基类。
@GetMapping("/actor/{id}")
public String getActorName(@PathVariable("id") int id) {
try {
return actorService.getActor(id);
} catch (ActorNotFoundException ex) {
throw new ResponseStatusException(
HttpStatus.NOT_FOUND, "Actor Not Found", ex);
}
}
@ControllerAdvice 注释允许我们将多个分散的@ExceptionHandler 合并到一个单一的全局错误处理组件中。
@ControllerAdvice
public class RestResponseEntityExceptionHandler
extends ResponseEntityExceptionHandler {
@ExceptionHandler(value
= { IllegalArgumentException.class, IllegalStateException.class })
protected ResponseEntity<Object> handleConflict(
RuntimeException ex, WebRequest request) {
return ResponseEntity<Object>;
}
}
回到您关于何时使用什么的问题:
参考资料:
【讨论】: