zoukankan      html  css  js  c++  java
  • springmvc自定义异常处理器

    6b450c3c818f46f2be772ec024d3e4f8

    当dispatchServlet接收到controller抛出的异常时,会将异常交由 HandlerExceptionResolver

    异常处理器处理!我们可以创建自定义异常处理器实现该接口来处理自定义异常

    1) 自定义异常类

    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)自定义异常处理器

    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中配置异常处理器

    <!-- 配置全局异常处理器 -->
    <bean
    id="customHandleException" class="cn.itcast.ssm.exception.CustomHandleException"/>

    4)定制错误页面

    <%@ 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)测试异常处理

    @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;
        }

    9a4c08a5bf624c50bce967b981607779

  • 相关阅读:
    交换排序:冒泡排序vs快速排序
    SSO
    MVC源码分析
    python_正则表达式概述
    (爬虫向)python_json学习笔记
    Pycharm Debug调试心得
    HTML学习二_HTML常用的行级标签,常用实体字符及表单标签
    吴恩达机器学习笔记3-代价函数II(cost function)
    吴恩达机器学习笔记2-代价函数I(cost function)
    Python面向对象1:类与对象
  • 原文地址:https://www.cnblogs.com/houchen/p/13237297.html
Copyright © 2011-2022 走看看