1. 开发一个全局异常类需要实现HandlerExceptionResolver接口
2. 例子
2.1. 新建一个名为SpringMVCException的Web工程, 拷入相关jar包
2.2. 新建一个名为SystemException.java的全局异常类
package com.lywgames.web.exception;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
/**
* 全局异常实现类
*/
public class SystemException implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest req, HttpServletResponse res, Object hanlder, Exception e) {
// 记录日志
e.printStackTrace();
// 错误消息
String msg = "很抱歉,系统发生异常了,请联系管理员";
// 响应用户错误提示
ModelAndView mav = new ModelAndView();
// 返回错误消息
mav.addObject("errorMsg", msg);
// 响应错误提示页面
mav.setViewName("error");
return mav;
}
}
2.3. 新建一个ExceptionAction.java的处理器
package com.lywgames.web.action;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class ExceptionAction {
@RequestMapping("reqestException")
public ModelAndView reqestException() {
ModelAndView modelAndView = new ModelAndView();
int result = 10 / 0;
System.out.println(result);
return modelAndView;
}
}
2.4. 在src目录下新建springmvc.xml配置, 配置我们的全局异常bean
2.5. 修改web.xml
2.6. 编写index.jsp
2.7. 编写error.jsp
2.8. 运行项目
2.9. 发送请求的时候出现了异常, 但是客户端并没有给我们报告500的服务器内部错误这样非常不友好的提示, 而是进入了我们的全局异常类进行处理, 返回处理结果