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

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

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

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" %>


Title


对不起,${msg} ,请稍后访问

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


统一异常处理(耦合项目)_第1张图片
image.png

第四步:配置异常处理Handler
applicationContext.xml 中配置 :

第五步:开发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";
}

}

你可能感兴趣的:(统一异常处理(耦合项目))