From 0a16d5d5742a0f91a2d71f28938decd3afd7d9f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Sat, 3 Oct 2026 13:41:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E5=85=A5=E9=98=9F?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=E7=9A=84=E7=9C=9F=20Error=20=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E8=A2=AB=E5=8C=85=E8=A3=85=EF=BC=8C=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E6=96=87=E6=A1=88=E4=B8=8D=E5=86=8D=E5=8F=98=E6=88=90=20{}?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - directTurnEnqueueFailure.ts:invokeTurnEnqueue 的 catch 先判断 error instanceof Error,是则原样抛出 - JSON.stringify(new Error(...)) 得到 {}(message/stack 不可枚举),包进 EnqueueFailureWrapper 后控制器读 error.message 只能拿到 {},真实失败文案丢失 - 结构化拒绝是普通对象,不受影响;真 Error 交回调用方既有的 instanceof 分界,与类注释口径一致 --- .../chat/conversation/directTurnEnqueueFailure.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/ai-game-creator-shell/src/view/project-development/chat/conversation/directTurnEnqueueFailure.ts b/apps/ai-game-creator-shell/src/view/project-development/chat/conversation/directTurnEnqueueFailure.ts index 44d2bbb69..262595b47 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/chat/conversation/directTurnEnqueueFailure.ts +++ b/apps/ai-game-creator-shell/src/view/project-development/chat/conversation/directTurnEnqueueFailure.ts @@ -48,6 +48,10 @@ export async function invokeTurnEnqueue( ...(input.creationType ? { creationType: input.creationType } : {}), }); } catch (error) { + // 真 `Error`(Tauri 传输失败 / 命令 panic / 参数序列化失败)不是结构化拒绝: + // `JSON.stringify(new Error(...))` 得到 `{}`,装进 wrapper 只会把真实文案丢掉、让横幅显示 `{}`。 + // 原样抛出,交给调用方的 `instanceof` 分界送回既有捕获链路(与上面的类注释同一口径)。 + if (error instanceof Error) throw error; throw new EnqueueFailureWrapper(error as EnqueueError); } }