SpringBoot定义全局异常类并打印错误堆栈信息


SpringBoot中可以定义全局异常类,不用在每一个接口使用try catch捕获返回异常

一、注解含义

@ControllerAdvice 这是一个增强的 Controller。使用这个 Controller ,可以实现三个方面的功能:

@ExceptionHandler指定捕获的异常类型,执行指定方法

二、定义全局异常类

@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
    @ResponseBody
    @ExceptionHandler(Exception.class)
    public DataResult defaultGlobalException(HttpServletRequest request, Exception e) {
        log(request, e);
        return DataResult.failure("系统异常");
    }

    public void log(HttpServletRequest request, Exception exception) {
        //换行符
        String lineSeparatorStr = System.getProperty("line.separator");

        StringBuilder exStr = new StringBuilder();
        StackTraceElement[] trace = exception.getStackTrace();
//        获取堆栈信息并输出为打印的形式
        for (StackTraceElement s : trace) {
            exStr.append("\tat " + s + "\r\n");
        }
        //打印error级别的堆栈日志
        log.error("访问地址:" + request.getRequestURL() + ",请求方法:" + request.getMethod() +
                ",远程地址:" + request.getRemoteAddr() + lineSeparatorStr +
                "错误堆栈信息如下:" + exception.toString() + lineSeparatorStr + exStr);
    }
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM