美文网首页
spring里捕捉全局异常

spring里捕捉全局异常

作者: 高旸1988 | 来源:发表于2018-07-09 15:39 被阅读0次

    项目里搭建了ELK日志分析,能够将后台的不同级别日志分类检索查看,其中error日志主要包括各种抛出的异常,用于定位系统的问题。
    error日志的打印使用了logback的error()方法,但是如果要把每个异常都打印出来的话,需要在controller层的catch块中写:
    logger.error("出错原因",ex);
    由于需要每个异常人工写错误日志打印,经常出现遗漏,所以想找一个集中的点,把遗漏的异常打印出来,用于排错。
    目前采用SimpleMappingExceptionResolver来处理。
    1、代码处理
    public class CustomExceptionHandler implements HandlerExceptionResolver {

    @Override  
    public ModelAndView resolveException(HttpServletRequest request,  
            HttpServletResponse response, Object object, Exception exception) {  
        ModelAndView modelAndView = new ModelAndView("/frame/error", model);
        /* 错误日志输出到控制台 */
        logger.error("捕捉到Spring全局异常",ex);
        return modelAndView;
    }  
    

    }

    2、声明到 Spring 配置文件
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="defaultErrorView" value="/frame/error"></property>

    <property name="exceptionMappings">
    <props>
    <prop key="java.lang.Exception">/frame/error</prop>
    </props>
    </property>
    </bean>

    这样如果controller层没有捕捉的异常,也可以打印出错误日志。

    相关文章

      网友评论

          本文标题:spring里捕捉全局异常

          本文链接:https://www.haomeiwen.com/subject/exhtpftx.html