@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());
}
}