From 8a71041b5d36012b5c5051240894740c8fa02ea3 Mon Sep 17 00:00:00 2001 From: chenhang Date: Fri, 3 Jul 2026 13:05:46 +0800 Subject: [PATCH] refactor(errors): normalize user-facing error messages --- src/app/error.tsx | 5 ++++- src/app/global-error.tsx | 9 ++++++++- .../components/stripe-payment-dialog.tsx | 13 ++++++++++--- .../errors/__tests__/exception-handler.test.ts | 14 ++++++++++++++ src/core/errors/exception-handler.ts | 18 +++++++++++++++--- .../handlers/fallback-exception-handler.ts | 18 +++++++++++++++++- src/core/net/chat-websocket.ts | 5 ++++- 7 files changed, 72 insertions(+), 10 deletions(-) diff --git a/src/app/error.tsx b/src/app/error.tsx index 463eb661..fe4d4948 100644 --- a/src/app/error.tsx +++ b/src/app/error.tsx @@ -13,6 +13,7 @@ import { useEffect } from "react"; import Link from "next/link"; +import { ExceptionHandler } from "@/core/errors"; import { ROUTES } from "@/router/routes"; import { Logger } from "@/utils"; @@ -29,6 +30,8 @@ export default function GlobalError({ error, unstable_retry }: ErrorProps) { log.error("[app/error.tsx]", error); }, [error]); + const errorMessage = ExceptionHandler.message(error, "Unexpected error"); + return (

- {error.message || "Unexpected error"} + {errorMessage} {error.digest ? ` (digest: ${error.digest})` : null}

diff --git a/src/app/global-error.tsx b/src/app/global-error.tsx index 8ec10f92..16589d02 100644 --- a/src/app/global-error.tsx +++ b/src/app/global-error.tsx @@ -11,12 +11,19 @@ * 因为它会替换根 layout。 */ +import { ExceptionHandler } from "@/core/errors"; + interface GlobalErrorProps { error: Error & { digest?: string }; unstable_retry?: () => void; } export default function GlobalError({ error }: GlobalErrorProps) { + const errorMessage = ExceptionHandler.message( + error, + "An unexpected error occurred.", + ); + return (

- {error.message || "An unexpected error occurred."} + {errorMessage}