当dispatchServlet接收到controller抛出的异常时,会将异常交由 HandlerExceptionResolver
异常处理器处理!我们可以创建自定义异常处理器实现该接口来处理自定义异常
1) 自定义异常类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public class MyException extends Exception { // 异常信息 private String message; public MyException() { super (); } public MyException(String message) { super (); this .message = message; } public String getMessage() { return message; } public void setMessage(String message) { this .message = message; } } |
2)自定义异常处理器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | public class CustomHandleException implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception exception) { // 定义异常信息 String msg; // 判断异常类型 if (exception instanceof MyException) { // 如果是自定义异常,读取异常信息 msg = exception.getMessage(); } else { // 如果是运行时异常,则取错误堆栈,从堆栈中获取异常信息 Writer out = new StringWriter(); PrintWriter s = new PrintWriter(out); exception.printStackTrace(s); msg = out.toString(); } // 把错误信息发给相关人员,邮件,短信等方式 // TODO // 返回错误页面,给用户友好页面显示错误信息 ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject( "msg" , msg); modelAndView.setViewName( "error" ); return modelAndView; } } |
3)在springmvc.xml中配置异常处理器
1 2 3 | <!-- 配置全局异常处理器 --> < bean id = "customHandleException" class = "cn.itcast.ssm.exception.CustomHandleException" /> |
4)定制错误页面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> < html > < head > < meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" > < title >Insert title here</ title > </ head > < body > < h1 >系统发生异常了!</ h1 > < br /> < h1 >异常信息</ h1 > < br /> < h2 >${msg }</ h2 > </ body > </ html > |
5)测试异常处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @RequestMapping (value = "/item/itemlist.action" ) public ModelAndView itemList() throws MyException{ List<Items> list = itemService.selectItemsList(); if ( true ){ throw new MyException( "商品列表不能为空!!" ); } ModelAndView mav = new ModelAndView(); mav.addObject( "itemList" , list); mav.setViewName( "itemList" ); return mav; } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。
- 本文固定链接: https://zxbcw.cn/post/190271/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)