Springboot 程序出现不知异常,进入指定方法处理,在返回时指定全局异常参数

说明:在写程序时,出现异常是正常的,但是不是所有的异常都能捕获或者抛出的,有时候自己都不知道的异常。在接口与接口调用中,如果每个接口都try~catch会感觉到有点累赘或者繁琐。

比如:int i = 1/0 ; 这条语句,如果你没有try-catch,那么调用该接口就会直接报错,影响调用该接口的功能执行。对于调用该接口的人来说,根本不知道怎么回事,可以会导致他的代码也运行不下去。

但是spring里面提供了这个解决该问题的功能:

ExceptionHandler运行机制分析

ExceptionHandler是spring里面的一个注解,非常方便去掉try...catch这类冗余难看的代码,有利于代码的整洁和优美。还能统一处理异常,是个非常好的技巧。如果出现未捕获的异常,会直接进入ExceptionHandler注解的方法中。

直接将以下代码放入项目内,就可以运行了。附代码:




import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

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

/**
 * \* Created with IntelliJ IDEA.
 * \* @author wcy
 * \* @date: 2019/8/8
 * \* @time: 13:38
 * @description:
 * 对于一些没有捕获的异常,但是出现的莫名其妙的异常
 *  会进行拦截,进行异常处理,保证接口请求返回正常。
 * @create: 2019-07-16 08:03
 */
@RestControllerAdvice
public class ErrExceptionHandler {
    public static final Logger logger= LoggerFactory.getLogger(ErrExceptionHandler .class);
    @ExceptionHandler(value = Exception.class) //申明捕获那个异常类
    public Object errorHandler(HttpServletRequest request, HttpServletResponse response, Exception e) throws Exception {
        // 异常进入该方法,可以进行代码功能处理
        
    
        //将异常打印出来,方便进行排查
        StringBuffer header =  request.getRequestURL();
        String queryString = request.getQueryString();
        logger.error("全局异常抛出的请求:"+header +"###请求参数:"+queryString);
        logger.error(ExceptionUtils.getStackTrace(e));
        return  "全局异常哦";
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值