myBatis自定义异常处理器

1: 异常处理思

   系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。系统的dao、service、controller出现异常都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,下面是我从网上找到的一张图,



            

      一般处理异常时,通常是通过日志记录异常信息,然后通知维护人员,最后给出用户提示,如网络电缆没有插好等等......
      自定义异常类
public class CustomException extends Exception {

    private String message; //  异常信息

    //提供有参构造
    public CustomException(String msg){
        this.message = msg;
    }

    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}


定义异常处理类
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springf
ramework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.io.StringWriter;

public class CustomExceptionResolver implements HandlerExceptionResolver {

    private Logger log = LoggerFactory.getLogger(CustomExceptionResolver.class);
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler, Exception exception) {
        String message;
        if(exception instanceof CustomException){
            //是预期异常
            CustomException ex = (CustomException) exception;

            //获取我们自定义的异常信息
            message = ex.getMessage();

        } else {
            //运行时异常   友好提示....
            message = "网络电缆有问题,请稍后再试..........";

            //异常信息打印到日志

//            exception.getMessage();

            StringWriter s = new StringWriter();
            PrintWriter printWriter = new PrintWriter(s);
            exception.printStackTrace(printWriter);
            s.toString();

            log.error(s.toString());
            //发送异常信息,省略
//            xxxxx
        }


        //跳转错误页面
        ModelAndView mView = new ModelAndView();
        mView.addObject("message",message); //设置错误消息
        mView.setViewName("error");//跳转错误页面,使用了视图视图解析器,这是逻辑路径

        return mView;

    }
}
异常处理器配置
springMvc 配置文件里需要配置配置 
<!--异常处理器配置,需要注意的是,id必须是"handlerExceptionResolver"-->

<bean id="handlerExceptionResolver" class="cn.csdn.controller.exectionResolver.CustomExceptionResolver"/>



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值