• 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

  • 相关阅读:
    ZooKeeperACL机制
    windows结束端口对应的进程
    facenet模型训练
    sourcetree git合并问题
    人脸识别学习
    爬虫 第八天
    WCF nginx反向代理遇到的问题
    WPF WindowChrome 自定义窗口
    WPF svg 转 xmal
    WPF MVVM笔记
  • 原文地址:https://www.cnblogs.com/houchen/p/13237297.html
Copyright © 2020-2023  润新知