Springboot四种异常处理方式-url拦截处理、@ExceptionHandle、SimpleMappingExceptionResolver、HandlerExceptionResolver

1. 拦截处理

经过拦截器测试,猜测,如果发生异常会去访问url:http://localhost:8080/errorpreHandle

对此,可以用拦截器进行拦截该路径信息,同一对异常进行处理,包括404页面异常

2. 特定异常处理

对于特定的异常,可以通过@ExceptionHandler注解,进行处理:

//添加ControllerAdvice,表示可以处理全局的异常
@ControllerAdvice
public class ZscExceptionHandler implements HandlerInterceptor {

     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
         System.out.println(request.getRequestURL()+"preHandle发生异常--------------");
         return true;
    }

    //Exception可以指定异常的类型,例如空指针异常、算术异常等等
    @ExceptionHandler(Exception.class)
    public void zscException(HttpServletRequest request, HandlerMethod method, Exception exception){
        System.out.println("发生异常--------------");
    }
}

3. 异常映射器

SimpleMappingExceptionResolver是系统提供的异常映射处理器

@Bean
public SimpleMappingExceptionResolver zscSimpleMappingExceptionResolver(){
    //创建异常映射器
    SimpleMappingExceptionResolver mapping = new SimpleMappingExceptionResolver();

    //key为异常类型,v为跳转的页面
    Properties mappings = new Properties();
    mappings.setProperty("java.lang.NullPointerException","error1");

    //添加异常类型
    mapping.setExceptionMappings(mappings);
    return mapping;
}

4. 继承HandlerExceptionResolver接口

@Component
public class MyExceptionResolve implements HandlerExceptionResolver {

    /**
     * 参数说明
     * @param request 请求信息
     * @param response 响应信息
     * @param handler 传入的参数
     * @param e    异常类型
     * @return 返回null 表示没有发生异常
     */
    @Override
    public ModelAndView resolveException(HttpServletRequest request,
                                         HttpServletResponse response,
                                         Object handler,
                                         Exception e) {

        if (e instanceof NullPointerException){
            System.out.println(request.getRequestURL()+" :  发生空指针异常");
        }

        if (e instanceof ArithmeticException){
            System.out.println(request.getRequestURL()+" :  发生算术异常");
        }
        return null;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值