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