From 62b69657a65e44b687ab69735c9aede766098fd2 Mon Sep 17 00:00:00 2001 From: xiaoqu Date: Fri, 4 Sep 2026 16:41:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(common):=20=E5=85=A8=E5=B1=80=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E5=A4=84=E7=90=86,=20ResponseStatusException=20?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E8=BF=94=E5=9B=9E=20{message}=20(Open=20API/?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E9=94=99=E8=AF=AF=E5=8F=AF=E8=AF=BB)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agent/common/GlobalExceptionHandler.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 xiaoqu-agent-service/src/main/java/me/iiv/agent/common/GlobalExceptionHandler.java diff --git a/xiaoqu-agent-service/src/main/java/me/iiv/agent/common/GlobalExceptionHandler.java b/xiaoqu-agent-service/src/main/java/me/iiv/agent/common/GlobalExceptionHandler.java new file mode 100644 index 0000000..137336f --- /dev/null +++ b/xiaoqu-agent-service/src/main/java/me/iiv/agent/common/GlobalExceptionHandler.java @@ -0,0 +1,24 @@ +package me.iiv.agent.common; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.server.ResponseStatusException; + +import java.util.Map; + +/** + * 统一错误响应:业务校验抛出的 ResponseStatusException 一律返回 {"message": 原因}。 + * 后台前端与 Open API 调用方(含 agent)都按 message 字段取错误说明; + * 未预期的异常不经过这里,避免内部细节外泄。 + */ +@RestControllerAdvice +public class GlobalExceptionHandler { + + @ExceptionHandler(ResponseStatusException.class) + public ResponseEntity> handleStatus(ResponseStatusException error) { + String reason = error.getReason(); + return ResponseEntity.status(error.getStatusCode()) + .body(Map.of("message", reason == null || reason.isBlank() ? "请求失败" : reason)); + } +}