对外:友好页面提示。
对内:看日志定位问题:
对异常的收集[日志,日志系统]与处理分析
线上的问题很多时候需要看异常日志。
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";
}
}
网友评论