如果 Spring 没有处理程序,它看起来DispatcherServlet.doService
(以及它委托给的后续方法)只是将异常委托给 servlet 容器。默认情况下,Spring 具有使用@ExceptionHandler
和@ResponseStatus
注释的处理程序,以及看起来很有前途的DefaultHandlerExceptionResolver
. 但后者对 s 没有任何作用DataAccessException
。所以,Spring MVC 对 s 没有什么特别DataAccessException
的。
如果您想将DataAccessException
s 映射到特定的 HTTP 响应状态代码,可以使用@ExceptionHandler
方法。
它看起来像这样:
@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";
}
}