我很高兴春天mvc抱歉,如果我问一个基本问题,我需要在我的Spring 4 MVC,Jersey项目中维护全局异常处理并返回对IOS移动应用程序的JSON响应。现在通过使用@ControllerAdvice和@ExceptionHandler,我创建了一个类如下
@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层中发生的所有异常,请提供建议。
答案 0 :(得分:2)
你使用的是正确的,只是处理所有异常。在服务或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());
}