gpt4 book ai didi

spring-mvc - 简化 Controller 中的异常捕获

转载 作者:行者123 更新时间:2023-12-01 12:58:38 25 4
gpt4 key购买 nike

我正在使用 Spring MVC 制作 Web 服务。 Controller 由用户直接调用(通过调度程序 servlet),响应以 JSON 形式返回。我认为通过注释使用 Controller 非常方便,但我发现在每个 Controller 中捕获异常非常无聊。异常总是相同的,而且每个异常的响应也是相同的,那么我可以定义如何只捕获它们一次而不是在每个 Controller 中捕获它们吗?我在考虑类似过滤器的东西,但这也许不是个好主意……有什么提示吗?

现在我的 Controller 看起来像这样:

@Controller
@RequestMapping("/do")
@PreAuthorize("hasRole('ROLE_USER')")
public class UselessController {

@SuppressWarnings("rawtypes")
@RequestMapping(value = "/foo", method = RequestMethod.GET)
@PreAuthorize("#bar == principal.bar")
public ResponseEntity foo(@RequestParam int bar) {

try {
//do something
} catch (SomeTypeOfException stExc) {
return new ResponseEntity(HttpStatus.FORBIDDEN);
} catch (NoResultException nrExc) {
return new ResponseEntity(HttpStatus.PRECONDITION_FAILED);
} catch (Exception exc) {
return new ResponseEntity(HttpStatus.METHOD_FAILURE);
}

return new ResponseEntity(HttpStatus.OK);
}

最佳答案

您正在寻找的是 HandlerExceptionResolver .如果您只需要一个用于大多数常见异常的简单解析器,请实现该接口(interface)(也有一些现成的实现,请参阅文档中的“所有已知实现类”)并将其注释为一个组件,以便在开始时选择它正常运行时间(至少我不记得曾经需要单独“注册”它或类似的东西)。如果您需要更细粒度的控制,您可以使用自己的 HandlerExceptionResolver 中的代码来实现,或者创建一个 SimpleMappingExceptionResolver将不同的异常映射到它们自己的错误 View ,这通常通过 xml-configs 完成。

关于spring-mvc - 简化 Controller 中的异常捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8106931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com