diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java index e04d528ad..e94b44901 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java @@ -22,6 +22,9 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; import javax.servlet.http.HttpServletRequest; import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; /** * 全局异常处理器 @@ -103,6 +106,7 @@ public class GlobalExceptionHandler { */ @ExceptionHandler(ServiceException.class) public R handleServiceException(ServiceException e, HttpServletRequest request) { + filterStackTrace(e, "com.ruoyi"); log.error(e.getMessage(), e); Integer code = e.getCode(); return ObjectUtil.isNotNull(code) ? R.fail(code.intValue(), e.getMessage()) : R.fail(e.getMessage()); @@ -165,4 +169,13 @@ public class GlobalExceptionHandler { public R handleDemoModeException(DemoModeException e) { return R.fail("演示模式,不允许操作"); } + + /** + * 根据包名过滤堆栈 + * @param e Exception + * @param packageName 包名 + */ + private void filterStackTrace(Exception e, String packageName) { + e.setStackTrace(Arrays.stream(e.getStackTrace()).filter(item -> item.getClassName().contains(packageName) && item.getFileName().contains(".java")).toArray(StackTraceElement[]::new)); + } }