美文网首页
统一异常处理(耦合项目)

统一异常处理(耦合项目)

作者: 神豪VS勇士赢 | 来源:发表于2018-08-10 21:17 被阅读24次

    对外:友好页面提示。
    对内:看日志定位问题:

    对异常的收集[日志,日志系统]与处理分析
    线上的问题很多时候需要看异常日志。

    springmvc提供全局异常处理器
    系统遇到异常,可以从底层往外层抛出,dao抛给service、service给controller、controller抛给前端控制器,前端控制器调用全局异常处理器。
    在表现层统一处理项目的异常。

    开发流程:(响应到页面)
    第一步:开发自定义异常类
    public class PageException extends Exception {
    private String errMsg;

    public PageException(String errMsg) {
        super(errMsg);
        this.errMsg = errMsg;
    }
    
    public String getErrMsg() {
        return errMsg;
    }
    
    public void setErrMsg(String errMsg) {
        this.errMsg = errMsg;
    }
    

    }

    第二步:开发统一异常处理Handler
    实现HandlerExceptionResolver接口
    响应异常信息到统一错误友好提示页面

    public class ExceptionHandler implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
    ModelAndView modelAndView=new ModelAndView();

        PageException pageException=null;
    
        if(ex instanceof  PageException){
            pageException = (PageException) ex;
        }else{
            pageException =new PageException("系统繁忙");
        }
        modelAndView.addObject("msg",pageException.getMessage());
        modelAndView.setViewName("error");
    
        return modelAndView;
    }
    

    }

    第三步:开发异常页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
    <title>Title</title>
    </head>
    <body>
    对不起,${msg} ,请稍后访问
    </body>
    </html>

    注意:error 页面 所载文件的位置


    image.png

    第四步:配置异常处理Handler
    applicationContext.xml 中配置 :
    <bean class="com.zyh.handler.ExceptionHandler"></bean>

    第五步:开发Action测试异常
    业务抛出自定义异常

    @Controller
    @RequestMapping("/error")
    public class ErrorController {

    @RequestMapping("/errorPage.do")
    public String  errorPage() throws PageException {
    
        try {
            int i=1/0;
        } catch (Exception e) {
            e.printStackTrace();
            throw  new PageException("抱歉这个是计算错误");
        }
        return "index";
    }
    

    }

    相关文章

      网友评论

          本文标题:统一异常处理(耦合项目)

          本文链接:https://www.haomeiwen.com/subject/dnnlbftx.html