Spring 4 mvc全局异常处理
问题描述:
我对spring mvc很陌生抱歉,如果我提出一个基本问题,我需要在Spring 4 MVC,Jersey项目中维护Global Exception Handling并返回JSON响应给IOS移动应用程序。现在,通过使用@ControllerAdvice和@ExceptionHandler,我创建了一个类一样,如果上面的方法是正确的,还是有处理发生在控制器,服务和DAO层的所有异常任何替代方法如下Spring 4 mvc全局异常处理
@ControllerAdvice
public class GlobalExceptionHandlerController {
@ExceptionHandler(Exception.class)
public @ResponseBody handleException(HttpServletRequest reqException ex) {
ErrorInfo response=new ErrorInfo();
if(ex.getMessage.contains("java.io")){
response.setMessage("FileNotFound exception occur");
return response;
}else if ...
}
请指点。
答
你使用的是正确的,所有的异常都会被处理。在服务或Dao层,你只需要抛出你的业务异常。你创建的类将捕获异常。但是你应该以不同的方式处理异常,并定义您自己的业务例外。 这里是一些示例代码。
@ExceptionHandler(RuntimeException.class)
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public ErrorResponse handleUnexpectedServerError(RuntimeException ex) {
ex.printStackTrace();
return new ErrorResponse("012", ex.getMessage());
}
处理业务异常,BusinessErrorException是自定义异常。
@ExceptionHandler(BusinessErrorException.class)
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
@ResponseBody
public ErrorResponse handleBusinessErrorException(BusinessErrorExceptionex) {
return new ErrorResponse(ex.getCode(), ex.getMessage());
}
这与泽西岛有什么关系?我在你的帖子中看到有关泽西岛的参考资料,但我没有看到任何其他支持细节。 –