自定义的全局异常处理方法

自定义全局异常处理

这里需要我们创建一个全局异常处理类,并添加@ControllerAdvice注解,在类中实现异常的处理方法,方法可以使用 @ExceptionHandler来标注所拦截的异常

/**
 * 自定义统一异常处理
 */
@Slf4j
@ControllerAdvice   //拦截有 @Controller 的类
public class ControllerExceptionHandle {
    /**
     * 异常处理方法
     * @ExceptionHandler() 标注方法用于异常处理
     * value = {Exception.class} 拦截异常为Exception级别的异常
     * @param request
     * @param e
     * @return
     */
    @ExceptionHandler(value = {Exception.class})
    public ModelAndView exceptionHandle(HttpServletRequest request,Exception e) throws Exception {
        log.error("RequestURL:{},Exception:{}",request.getRequestURL(),e);

        //如果注解存在,那么将异常抛出(因为已经定义了异常的处理)
        if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class)!=null){
            throw e;
        }
        //这里先判断拦截到的Exception是不是我们自定义的异常类型
//        if(e instanceof NotFoundExcept){
//            NotFoundExcept notFoundExcept = (NotFoundExcept) e;
//            throw e;
//        }
		//若所拦截的异常没有自定义处理,则默认返回到error界面
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("url",request.getRequestURL());
        modelAndView.addObject("exception",e);
        modelAndView.setViewName("error/error");
        return modelAndView;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值