zoukankan      html  css  js  c++  java
  • Spring MVC异常统一处理

    package com.shzq.common.exception;

    import java.io.PrintWriter;
    import java.io.StringWriter;
    import java.util.HashMap;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;

    import com.alibaba.fastjson.JSONObject;
    import com.shzq.common.utils.ResultUtils;


    /**
    *Exception 捕获类 把相关Exception写入到日志文件中
    * */
    public class ExceptionHandler extends SimpleMappingExceptionResolver {

    private static final Logger logger = LoggerFactory.getLogger(ExceptionHandler.class);

    protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {

    try {
    HashMap<String, Object> resultMap = ResultUtils.error("404", "系统异常,请联系相关人员!");
    JSONObject resultObj = new JSONObject(resultMap);

    response.setContentType("text/json; charset=utf-8");
    response.getWriter().write(resultObj.toJSONString());
    //将异常栈信息记录到日志中
    logger.error(getTrace(ex));
    response.getWriter().flush();
    } catch ( Exception e ) {

    e.printStackTrace();
    }

    return null;

    }

    public static String getTrace(Throwable t) {
    StringWriter stringWriter = new StringWriter();
    PrintWriter writer = new PrintWriter(stringWriter);
    t.printStackTrace(writer);
    StringBuffer buffer= stringWriter.getBuffer();
    return buffer.toString();
    }
    }

     <bean id="exceptionHandler" class="com.shzq.common.exception.ExceptionHandler"/>  applicationcontext.xml配置 或者是@Component

    springmvc 最主要的 是实现 HandlerExceptionResolver 接口

  • 相关阅读:
    转载一篇文章 python程序员经常犯的10个错误
    外部表与partition
    grpc 入门(二)-- 服务接口类型
    用例图简介(转)
    UML类图(Class Diagram)中类与类之间的关系及表示方式(转)
    快速搭建fabric-v1.1.0的chaincode开发环境
    ubuntu networking 与 network-manager
    [转]bashrc与profile区别
    超矩链--基于矩阵的分布式账本
    adb 在windows7中的使用
  • 原文地址:https://www.cnblogs.com/zxf330301/p/6554798.html
Copyright © 2011-2022 走看看