From 7b74c697e483861cf7174da7a92771445c487f46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Sat, 26 Apr 2025 16:32:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=8D=95=E8=8E=B7=E4=B8=8E=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gd/system/common/exception/AppException.java | 21 +++++++++++++++++++ .../iflytop/gd/system/common/result/Result.java | 4 ++++ .../gd/system/handler/GlobalExceptionHandler.java | 24 ++++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 src/main/java/com/iflytop/gd/system/common/exception/AppException.java create mode 100644 src/main/java/com/iflytop/gd/system/handler/GlobalExceptionHandler.java diff --git a/src/main/java/com/iflytop/gd/system/common/exception/AppException.java b/src/main/java/com/iflytop/gd/system/common/exception/AppException.java new file mode 100644 index 0000000..28e634e --- /dev/null +++ b/src/main/java/com/iflytop/gd/system/common/exception/AppException.java @@ -0,0 +1,21 @@ +package com.iflytop.gd.system.common.exception; + +import com.iflytop.gd.system.common.result.IResultCode; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +public class AppException extends RuntimeException { + private final IResultCode resultCode; + + public AppException(IResultCode resultCode) { + super(resultCode.getMsg()); + this.resultCode = resultCode; + } + + @Override + public String toString() { + return "AppException{" + "code='" + resultCode.getCode() + ", msg=" + resultCode.getMsg() + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/com/iflytop/gd/system/common/result/Result.java b/src/main/java/com/iflytop/gd/system/common/result/Result.java index c42ae63..b44497d 100644 --- a/src/main/java/com/iflytop/gd/system/common/result/Result.java +++ b/src/main/java/com/iflytop/gd/system/common/result/Result.java @@ -53,6 +53,10 @@ public class Result implements Serializable { return result(resultCode.getCode(), StrUtil.isNotBlank(msg) ? msg : resultCode.getMsg(), null); } + public static Result failed(String code, String msg) { + return result(code, msg, null); + } + private static Result result(IResultCode resultCode, T data) { return result(resultCode.getCode(), resultCode.getMsg(), data); } diff --git a/src/main/java/com/iflytop/gd/system/handler/GlobalExceptionHandler.java b/src/main/java/com/iflytop/gd/system/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..0a6ae18 --- /dev/null +++ b/src/main/java/com/iflytop/gd/system/handler/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package com.iflytop.gd.system.handler; + +import com.iflytop.gd.system.common.exception.AppException; +import com.iflytop.gd.system.common.result.Result; +import com.iflytop.gd.system.common.result.ResultCode; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +@Slf4j +@RestControllerAdvice +public class GlobalExceptionHandler { + + @ExceptionHandler(Exception.class) + public Result handleException(Exception ex) { + if (ex instanceof AppException ae) { + log.warn("AppException:", ae); + return Result.failed(ae.getResultCode()); + } + log.error("Unhandled exception:", ex); + return Result.failed(ResultCode.SYSTEM_ERROR); + } + +} \ No newline at end of file