⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

错误扩展码与结构化异常:统一 GraphQL 错误协议

设计一套可扩展的错误代码体系,包含用户友好的消息、字段路径、调试信息,并支持国际化。 · 难度:入门 · +10XP

错误扩展码与结构化异常

GraphQL 默认错误只包含 message 与 path,无法满足客户端精确处理。本教程将教你定义全局错误码枚举(如 UNAUTHORIZED, NOT_FOUND, VALIDATION_ERROR),并在自定义 ApolloError 或 graphql-error-classes 中携带 extensions.code, extensions.field, extensions.i18n_key。我们会实现一个格式化函数,将数据库异常、验证错误统一转换为标准格式,并允许开发者在 resolver 中通过 throw new BusinessError('INSUFFICIENT_BALANCE', { userId }) 抛出结构化错误。

class BusinessError extends GraphQLError {
  constructor(code, details) {
    super(code);
    this.extensions = { code, details, timestamp: Date.now() };
  }
}

throw new BusinessError('INSUFFICIENT_BALANCE', { balance: 10, required: 50 });

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 147 篇
0 完成
🔥 0