@dotcom-reliability-kit/errors

中文文档
5.1.0发布于 2026/08/20MITTypeScriptES Module近 30 天下载 3590

一组错误类,帮助您在任何情况下丢出最合适的错误

中文使用文档
文档目录10 节
  1. 使用量
  2. OperationalError
  3. HttpError
  4. DataStoreError
  5. UpstreamServiceError
  6. UserInputError
  7. BaseError
  8. 移动
  9. 捐款
  10. 许可证

@dotcom - 可靠性- kit/错误

一组错误类,帮助您在任何情况下抛出最合适的错误, 并识别何时知道错误对未知 。 此模块是 FT.com 可靠性工具包。 。 。 .

使用量

安装 @dotcom-reliability-kit/errors 作为依附关系:

npm install --save @dotcom-reliability-kit/errors

在代码中包含 :

import { OperationalError } from '@dotcom-reliability-kit/errors';

[TIP] 如果您使用此软件包并带有 TypeScript , 我们建议您使用以下设置: tsconfig.json 避免类型错误的文件 :

{
    "esModuleInterop": true,
    "module": "nodenext",
    "moduleResolution": "nodenext"
}

此模块会导出不同的错误类别, 这些类别的工作不同 。 所有东西都可以以与上例相同的方式被导入.

OperationalError

这个 OperationalError 类是大多数其他出错类型的基础类。 此上下文"操作"意为"我们理解这个出错的原因",所以通过使用这个出错类型,帮助你的团队在抛出一个出乎意料的出错时理解.

Joyent 处理文件错误 对操作错误有一个很好的解释.

总是最好使用更具体的错误,例如. UpstreamServiceError,如果存在适合你需要的。 因此,审查这里的文档 找到最合适的错误.

OperationalError 可以像普通错误一样工作, 需要消息 :

throw new OperationalError('example message');

也可以用数据对象构建操作错误。 这个接受一个 code 属性,对于正在发生的错误类型,必须设置为指针,以及 message 包含可读信件的属性 :

throw new OperationalError({
    message: 'example message',
    code: 'EXAMPLE_CODE'
});

出错代码常态化为大写,字母数字,并下划线限制. 错误属性可以像其他属性一样访问 :

error.message // example message
error.code // EXAMPLE_CODE

也可以将这两种构建错误的方法结合起来,既传递信息,又传递附加选项. 这适用于所有错误类型:

throw new OperationalError('example message', {
    code: 'EXAMPLE_CODE'
});

您也可以将额外属性传递到错误对象中,这些属性将被收集并存储在 data 错误属性 :

const error = new OperationalError({
    message: 'example message',
    code: 'EXAMPLE_CODE',
    article: 'd92acacb-ac53-4505-aa88-eae4b42de994'
});

error.data.article // d92acacb-ac53-4505-aa88-eae4b42de994

OperationalError.id

这个 id 操作错误的属性存储一个用于向最终用户显示该错误的唯一标识符。 此错误ID必须符合 错误 ID 规格 否则将默认为 EI000。 。 。 .

[TIP] 如果您不确定, 请使用对系统有意义的内部错误代码, 匹配以下正则表达式 : ^EI[0-9]{3}$。欲了解更多关于预期格式和注册的用户信息 错误 ID 规格。您也可以通过 错误编号软件包。 。 。 .

OperationalError.relatesToSystems

这个 relatesToSystems 操作错误的属性存储列表 FT系统 与你抛出的错误有关.

这一阵列可包括:

  • 返回 HTTP 错误状态代码的依赖性
  • 未提供预期数据的数据存储

OperationalError.cause

这个 cause 操作出错的属性存储根因子出错实例,例如已捕获的出错 try编号 :catch 块。 它允许操作错误包含由根因子错误所捕获的诊断信息.

OperationalError.isErrorMarkedAsOperational()

您也可以使用 isErrorMarkedAsOperational 方法。 它接受任何类型的错误对象并将返回 true 如果错误有真伪 isOperational 财产和 false 否则:

OperationalError.isErrorMarkedAsOperational(new OperationalError('example message')); // true
OperationalError.isErrorMarkedAsOperational(new Error('example message')); // false

HttpError

这个 HttpError 类扩展 OperationalError 并代表 HTTP 错误状态。 它可以和普通错误一样工作,等待消息. 在这种情况下,它将代表一个HTTP 500数字 :

throw new HttpError('example message');

您也可以用数据对象构建 HTTP 错误 。 这个接受一个 statusCode 属性,它是一个有效的 HTTP 状态代码,以及您可以在其中设置的所有属性 OperationalError数字 :

throw new HttpError({
    message: 'your thing was not found',
    statusCode: 404
});

单用状态代码创建 HTTP 错误也是可能的,它会默认信件到相应的 HTTP 状态消息:

throw new HttpError(404);

错误属性可以像其他属性一样访问 :

error.message // your thing was not found
error.statusCode // 404
error.status // 404
error.statusMessage // Not Found
error.code // HTTP_404

为什么要用这个 http-errors? 吗?

使用这个错误而不是优秀的 网页错误 库就是我们延伸 OperationalError 默认。 这意味着你所抛出的所有HTTP出错被我们工具的其余部分视为"已知出错". 我们还定了一个 code 默认的属性导致监控仪表板的代码减少 code 财务报告和审定财务报表 statusCode 属性,以确定出错的类型.

DataStoreError

这个 DataStoreError 类扩展 OperationalError 并代表在访问数据存储时发生的错误,例如:MongoDB、PostgreSQL或Redis。 它具有操作错误的所有特性,你可以仅用一个信息构建:

throw new DataStoreError('Could not connect to Redis');

也可以用数据对象构建数据存储错误。 您可以使用定义于 OperationalError数字 :

throw new DataStoreError({
    code: 'REDIS_CONNECTION_FAILED',
    message: 'Could not connect to Redis',
});

UpstreamServiceError

这个 UpstreamServiceError 类扩展 HttpError 并代表连接上游服务时发生的错误,例如FT或第三方API。 它具有操作和HTTP出错的所有特性,你可以仅用一个消息来构建:

throw new UpstreamServiceError('Content could not be fetched');

HTTP 状态代码默认为 a 502 (中文(简体) )。这表明,在连接上游服务时,您的系统收到了无法为最终用户服务的答复.

也可以用数据对象构建上游服务错误。 您可以使用定义于 HttpError 财务报告和审定财务报表 OperationalError数字 :

throw new UpstreamServiceError({
    code: 'CONTENT_PIPELINE_FAILED',
    message: 'Content could not be fetched, the content pipeline is responding with a 503 status',
    statusCode: 503,
    relatesToSystems: ['cp-content-pipeline-graphql']
});

UserInputError

这个 UserInputError 类扩展 HttpError 并代表基于无效用户输入的错误,例如,它们将一个错误的电子邮件地址输入到表格中。 它具有操作和HTTP出错的所有特性,但默认为 400 状态代码。 您可以仅用一个消息构建 :

throw new UserInputError('An invalid email address was input');

也可以用数据对象构建用户输入错误。 您可以使用定义于 HttpError 财务报告和审定财务报表 OperationalError数字 :

throw new UserInputError({
    code: 'REGISTRATION_INFO_INVALID',
    message: 'An invalid email address was input'
});

BaseError

我们的指南开始谈论 操作 vs 程序员出错。这个库中的其他错误提供了操作错误,但它们都扩展了一个名为 BaseError本课提供了一些便利 OperationalError 但标记为非操作性:

const error = new BaseError('This is an error');
error.isOperational === false; // true;

这使得您可以使用库代码中的"可靠性 Kit"出错,在那里丢出操作错误是不合理的. 这个 id, (中文(简体) ), code, (中文(简体) ), message,以及 cause 属性的工作方式与 OperationalError数字 :

throw new BaseError({
    message: 'example message',
    code: 'EXAMPLE_CODE',
    cause: new TypeError('example cause')
});

移动

咨询 移徙指南 如果你想要迁移到这个软件包的后期主要版本.

捐款

见 可靠性工具包中心贡献指南。 。 。 .

许可证

凭 麻省理工学院 执照.
版权:"2022","金融时报"有限公司.

版本与发布记录

@dotcom-reliability-kit/errors 共发布 35 个版本,首次发布于 2022/05/04;过去 12 个月发布了 6 个版本。

版本发布日期距今
5.1.0latest2026/08/202 个月前
5.0.12026/07/144 个月前
5.0.02026/06/234 个月前
5.0.0-beta.2prerelease2026/06/035 个月前
5.0.0-beta.12026/02/069 个月前
4.2.02025/12/0411 个月前

关于 @dotcom-reliability-kit/errors 的常见问题

@dotcom-reliability-kit/errors 是什么?

一组错误类,帮助您在任何情况下丢出最合适的错误

如何安装 @dotcom-reliability-kit/errors?

在项目目录运行 npm install @dotcom-reliability-kit/errors,或使用 pnpm add / yarn add / bun add。

@dotcom-reliability-kit/errors 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@dotcom-reliability-kit/errors 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@dotcom-reliability-kit/errors 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^22.12 || ^24 || ^26。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@dotcom-reliability-kit/errors 可以商用吗?

@dotcom-reliability-kit/errors 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@dotcom-reliability-kit/errors 的下载量有多少?

根据 npm 官方下载统计,@dotcom-reliability-kit/errors 在 2026/10/13 – 2026/11/11 这 30 天内被下载 3,590 次,日均约 120 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@dotcom-reliability-kit/errors 还在维护吗?

最新版本 5.1.0 发布于 2026/08/20(2 个月前);至今共发布 35 个版本,其中过去 12 个月发布了 6 个;首次发布于 2022/05/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。