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"/>
  • 相关阅读:
    spectrogram函数做短时傅里叶分析
    (转) 经典功率谱估计及Matlab仿真
    matlab和C语言实现最小二乘法
    Matlab周期图法使用FFT实现
    vs配置SP++3.0
    VS2015调用matlab Plot函数
    elasticsearch配置文件解析
    elasticsearch.yml
    elasticsearch 动态映射
    elasticsearch _settings
  • 原文地址:https://www.cnblogs.com/andyfengzp/p/6170827.html
Copyright © 2011-2022 走看看