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"/>
  • 相关阅读:
    Open live Writer
    python两则99乘法表
    更改jupyter-notebook启动时的默认目录
    在内容中插入代码,返回进行编辑时,有无法跳出代码区的情况
    关于jupyter notebook密码设置
    nginx+zuul
    spring-cloud 服务优雅下线
    java.util.ConcurrentModificationException异常排查
    使用bitset实现毫秒级查询(二)
    使用bitset实现毫秒级查询
  • 原文地址:https://www.cnblogs.com/andyfengzp/p/6170827.html
Copyright © 2011-2022 走看看