1. 以前SpringMVC中的异常处理
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//SpringMVC全局异常处理器,如果要使用这个异常处理器,需要实例化
public class handlerException implements HandlerExceptionResolver {
//返回的ModelAndView,如果有异常,就给用户一个页面地提示
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
//进行异常处理
//自定义异常,运行时异常(系统异常,例如数据库连接失败)
//把异常通知给相关人员(短信,邮件)
//需要给用户一个友好的提示
return null;
}
}
2. 在SpringBoot中的
基于@ControllerAdvice注解的全局异常统一处理只能针对于Controller层的异常,意思是只能捕获到Controller层的异常,在service层或者其他层面的异常都不能捕获。
(一)自定义异常:
/**
* 自定义异常
*/
public class RRException extends RuntimeException {
private static final long serialVersionUID = 1L;
private String msg;
private int code = 500;
public RRException(String msg) {
super(msg);
this.msg = msg;
}
public RRException(String msg, Throwable e) {
super(msg, e);
this.msg = msg;
}
}
(二)统一全局异常处理
/**
* @Description: 统一异常处理类
* @Author: xuxiaoyu
* @Create: 2019-11-17 10:48
*/
@ControllerAdvice
public class BaseExceptionHandler {
@ExceptionHandler(value = Exception.class)
@ResponseBody
public Result error(Exception e){
e.printStackTrace();
return new Result(false, StatusCode.ERROR,e.getMessage());
} ............. ............. .............
}
|