Database DataAccessException响应状态
如果Spring控制器调用的代码抛出SpringDatabase DataAccessException响应状态,database,spring,http,spring-mvc,Database,Spring,Http,Spring Mvc,如果Spring控制器调用的代码抛出SpringDataAccessException,并且控制器没有捕捉到它或者没有异常处理程序,Spring会向客户端返回适当的HTTP响应状态吗 也就是说,DataAccessExceptions是否有合适的@ResponseStatus注释?或者SpringMVC框架是否显式捕获并处理这些异常?或者框架对它们没有什么特别的作用,然后像对待任何其他RuntimeException,我猜这会导致HTTP状态为500(内部服务器错误)。如果Spring没有处理程
DataAccessException
,并且控制器没有捕捉到它或者没有异常处理程序,Spring会向客户端返回适当的HTTP响应状态吗
也就是说,DataAccessException
s是否有合适的@ResponseStatus
注释?或者SpringMVC框架是否显式捕获并处理这些异常?或者框架对它们没有什么特别的作用,然后像对待任何其他RuntimeException
,我猜这会导致HTTP状态为500(内部服务器错误)。如果Spring没有处理程序,它看起来(以及它所委托的后续方法)只是将异常委托给servlet容器。Spring默认具有使用@ExceptionHandler
和@ResponseStatus
注释的处理程序,以及外观良好的DefaultHandlerExceptionResolver
。但是后者不处理DataAccessException
s。因此,SpringMVC对DataAccessException
s没有任何特殊功能
如果要将DataAccessException
s映射到特定的HTTP响应状态代码,可以
看起来是这样的:
@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";
}
}
如果Spring没有处理程序,它看起来(以及它所委托给的后续方法)只是将异常委托给servlet容器。Spring默认具有使用@ExceptionHandler
和@ResponseStatus
注释的处理程序,以及外观良好的DefaultHandlerExceptionResolver
。但是后者不处理DataAccessException
s。因此,SpringMVC对DataAccessException
s没有任何特殊功能
如果要将DataAccessException
s映射到特定的HTTP响应状态代码,可以
看起来是这样的:
@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";
}
}