-- 创造无限可能

java SringBoot 添加全局异常拦截

2023-08-16 16:46:29
632 人浏览 0 人点赞
有用,点赞支持一下

@RestControllerAdvice注解是一个用于全局异常处理的注解,可以用来统一处理所有Controller层的异常。
@Order(index) //定义捕获错误的优先级

import com.bderp.controller.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
import javax.servlet.http.HttpServletRequest;

@Slf4j
//@Order(2) //定义捕获错误的优先级
@RestControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler{

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

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public R handlerException(HttpServletRequest request, Exception e){

         //获取报错的控制器
         String controllerName = ex.getStackTrace()[0].getClassName();
         //获取报错行
         int lineNumber = ex.getStackTrace()[0].getLineNumber();

         //获取报错体
         StringWriter sw = new StringWriter();
         PrintWriter pw = new PrintWriter(sw);
         ex.printStackTrace(pw);
         String errorMessage = sw.toString();

         //写入日志文件
         //Logger.error(errorMessage);

        return R.error("错误了" + e.getMessage());
    }
}