gpt4 book ai didi

database - DataAccessException 响应状态

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:10:17 26 4
gpt4 key购买 nike

如果 Spring Controller 调用的代码抛出 Spring DataAccessException,并且 Controller 没有捕获它或没有异常处理程序,那么 Spring 会向客户端返回适当的 HTTP 响应状态吗?

也就是说,DataAccessException 是否有合适的 @ResponseStatus 注释?或者 Spring MVC 框架是否显式捕获并处理这些异常?或者框架对它们没有做任何特别的事情,然后像对待任何其他 RuntimeException 一样对待,我猜这会导致 HTTP 状态为 500(内部服务器错误)。

最佳答案

看起来像DispatcherServlet.doService (以及它委托(delegate)给的后续方法)如果 Spring 没有处理程序,则只需将异常委托(delegate)给 servlet 容器。默认情况下,Spring 具有使用 @ExceptionHandler@ResponseStatus 注释的处理程序,以及看起来很有前途的 DefaultHandlerExceptionResolver。但后者对 DataAccessException 没有任何作用。因此,Spring MVC 对 DataAccessException 没有做任何特别的事情。

如果您想将 DataAccessException 映射到特定的 HTTP 响应状态代码,您可以 use an @ExceptionHandler method .

看起来像这样:

@Controller
public class YourController {

@RequestMapping(value = "foo")
public void foo() throws DataAccessException {
...
}

@ExceptionHandler(DataAccessException.class)
@ResponseStatus(value=HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public String handleException(DataAccessException ex) {
return "error message";
}
}

关于database - DataAccessException 响应状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17363659/

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