Muse Wonder Full 可基于项目错误规范自动生成符合团队风格的异常处理代码,覆盖 JWT 解析失败、Redis 连接超时等真实故障路径,并确保 TypeScript 类型安全与日志契约一致。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你想为刚写完的登录接口添加全面的异常处理,但手动补 try/catch 和错误分类容易漏掉边界场景——Muse Wonder Full 能基于你当前项目的错误规范、日志框架和已有异常模式,自动生成符合团队风格的防御代码,覆盖网络中断、JWT 解析失败、Redis 连接超时等真实故障路径。
确认项目异常治理上下文
打开终端,进入项目根目录,运行 grep -r "catch.*Error\|throw.*new.*Error" --include="*.ts" --include="*.js" src/ | head -n 5,提取出最近 3 个模块中实际使用的错误类名(如 AuthError、NetworkTimeoutError)、日志调用方式(如 logger.error('AUTH-001', err))和 HTTP 状态码映射逻辑(如 AuthError → 401,ValidationError → 400)。【这一步不可跳过,Muse Wonder Full 默认不识别自定义错误类,若未提供真实错误命名与抛出位置,它会生成 generic Error 或 SyntaxError,导致 TypeScript 编译失败】
把提取结果整理成三行文本:① 错误类清单;② 日志模板示例;③ 状态码映射表。不要加任何解释性文字,只保留原始代码片段。
构造带契约约束的异常生成指令
方法一:在 Muse Code 中新建对话,粘贴以下三段内容(顺序严格不可调换):
① 第一段(项目错误规范):
"本项目使用 TypeScript + Express + winston 日志。所有业务错误继承 BaseError 类,子类命名格式为 {Domain}{Action}Error(如 LoginInvalidCredentialsError)。日志必须用 logger.error(code, { error, context }) 格式,code 必须是大写字母+数字组合(如 'AUTH-003')。HTTP 响应状态码由错误类名自动映射:*Auth*Error → 401,*Network*Error → 503,*Validation*Error → 400。"
② 第二段(待增强函数签名):
"async function handleLogin(req: Request, res: Response): Promise
// TODO: 补全异常处理
const token = await verifyJwt(req.headers.authorization);
await redis.setex(`user:${token.userId}`, 3600, JSON.stringify(token));
res.json({ success: true, user: token.user });
}"
③ 第三段(精准指令):
"请为 handleLogin 函数插入 try/catch 块,按以下规则补全异常处理:a) verifyJwt 抛出 JwtParseError → 映射为 InvalidTokenError(401);b) redis.setex 抛出 RedisConnectionError → 映射为 NetworkUnavailableError(503);c) 所有未捕获错误统一转为 InternalServerError(500),code 固定为 'SYS-999';d) 每个 catch 块必须调用 logger.error 并传入 code 和完整 error 对象;e) 不修改原函数返回类型与参数签名。"
验证并落地异常代码
第一步:检查 Muse Wonder Full 返回的代码中,每个 catch 块是否都包含 logger.error 调用,且第一个参数是字符串字面量(如 'AUTH-003'),不是变量或模板字符串。
第二步:确认 redis.setex 的异常分支里没有出现 catch (err) 这种裸捕获,必须是 catch (err: RedisConnectionError) 或类似显式类型断言。
第三步:将生成代码复制进编辑器,执行 tsc --noEmit src/api/auth.ts,确保无 TS2571(any 类型访问)或 TS2339(属性不存在)报错。
第四步:保存文件,运行 npm run dev 启动服务,用 curl 发送带无效 JWT 的请求,观察日志输出是否含 AUTH-003 和完整堆栈。

















