zoukankan      html  css  js  c++  java
  • SpringMvc异常处理

    1、HandlerExceptionResolver实现

    这里是编写一个全局的异常处理器,其中分别处理ajax请求和页面请求的异常,ajax请求则返回错误信息,页面请求则跳转到500.jsp

    1.1实现HandlerExceptionResolver接口

    public class GlobalHandlerExceptionResolver implements HandlerExceptionResolver {
    
    private static final Logger logger = LoggerFactory.getLogger(GlobalHandlerExceptionResolver.class);
    
    @Override
    public ModelAndView resolveException(HttpServletRequest req, HttpServletResponse resp, Object o, Exception ex) {
        boolean isAsync = req.getHeader("X-Requested-With") != null && "XMLHttpRequest".equals(req.getHeader("X-Requested-With").toString());
    
        if(isAsync) {
        	//WebTransException是自定义异常
            if (ex instanceof WebTransException) {
                WebTransException webTransException = (WebTransException) ex;
                printWrite(webTransException.getResponseMsg(), resp);
                logger.warn("ajax warn - [{}]", webTransException.getResponseCode()+":"+webTransException.getResponseMsg());
            }else {
                ex.printStackTrace();
                printWrite("系统异常!", resp);
            }
    
            return new ModelAndView();
        }
    
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("error/500");
    
        if(ex instanceof WebTransException)
            modelAndView.addObject("WebTransException", ex);
        else
            ex.printStackTrace();
    
        return modelAndView;
    }
    
    public void printWrite(String msg, HttpServletResponse response) {
        try {
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html; charset=UTF-8");
    
            PrintWriter pw = response.getWriter();
            pw.write(msg);
            pw.flush();
            pw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    }
    

    1.2页面ajax弹出错误信息

    function deleteUser() {
        alert(${result["id"]});
    
        $.ajax({
            timeout : 20000,
            type : "POST",
            dataType : "json",
            url : url,
            data : data,
            success : function(data) {
                alert(data);
            },
            error : function(data) {
    //         data.responseText就是后台返回的错误信息
                alert(data.responseText);
            }
        });
    }
    

    1.3把处理器加到配置文件

    <bean id="globalHandlerExceptionResolver" class="com.yitop.admin.ctrl.GlobalHandlerExceptionResolver"/>
  • 相关阅读:
    多读者多写者的无锁队列
    PCI设备的地址空间
    交换机能不能连接不同的网段?
    VMware Workstation的三种网络连接模式
    Linux内存寻址和内存管理
    Fragment基础信息传递
    Android Studio获取SHA1和MD5方法
    AppCan学习笔记数据存储及listview简单应用
    Fragment基础生命周期
    Fragment基础创建
  • 原文地址:https://www.cnblogs.com/andyfengzp/p/6170827.html
Copyright © 2011-2022 走看看