1.异常处理思路
1)Controller调用service,service调用dao,异常是都是向上抛的,最终由DispathcherServlet找异常处理器进行异常的处理
2.实现步骤:
1)编写自定义异常类
2)编写异常处理器
3)配置异常处理器(跳转到提示页面)
3.代码实现
1)编写自定义异常类
public class SysException extends Exception {
private String message;
public SysException(String message) {
this.message = message;
}
public SysException() {
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
2)编写异常处理器,实现HandlerExceptionResolver接口
//异常处理器
public class SysExceptionResolver implements HandlerExceptionResolver {
//当controller把异常抛过来的时候,如果前端控制器中
//有异常处理器的组件,会调异常处理器,则异常处理器中的
//方法会被执行
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception ex) {
//准备异常对象
SysException e=null;
if(ex instanceof SysException){
e=(SysException) ex;
}else {
e=new SysException("系统正在维护");
}
ModelAndView mv = new ModelAndView();
mv.addObject("errorMsg",e.getMessage());//要么是外界传过来的,要么是自己写的
mv.setViewName("error");
return mv;
}
}
3)在springmvc.xml中配置异常处理器(跳转到提示页面)
<!--配置异常处理器-->
<bean id="SysExceptionResolver" class="com.sxt.exception.SysExceptionResolver"/>
4)提示页面中展示提示信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${errorMsg}
</body>
</html>