@alessiofrittoli/exception

中文文档
4.3.0发布于 2026/11/04MITTypeScriptESM + CJS零依赖近 30 天下载 2117

容易处理出错

中文使用文档
文档目录7 节
  1. 容易处理出错
  2. 目录
  3. 概览
  4. 开始
  5. 发展
  6. API 参考
  7. 由 所制

例外条款

容易处理出错

本文件介绍的是: Exception class,它提供了处理TypeScript中错误的结构化方法. 它包括自定义属性,例如: code, (中文(简体) ), name,以及 status 用于更详细的错误报告和调试.

Latest version Test coverage Socket Security score npm downloads Dependencies Dependencies status

minified minizipped Tree shakable

Fund this package

目录


概览

这个 Exception 类扩展本地 JavaScript Error 对象,添加自定义字段来改进错误分类和处理。 它还包括一种静态工具方法,用以检查一个物体是否是实例 Exception 课.

开始

运行以下命令开始使用 @alessiofrittoli/exception 在您的项目中:

npm i @alessiofrittoli/exception

或使用 pnpm

pnpm i @alessiofrittoli/exception

发展

运行以下开始开发

nvm use

pnpm i

地方发展

运行以下

pnpm dev

这将生成未忽略的输出代码, 源图并启用源文件监视器 .


生产建设

运行以下来创建本地生产建筑

pnpm build

这将生成没有源代码的已修改输出代码 .


单位测试

通过运行下列程序运行所有定义的测试套件 :

# Run tests and watch file changes.
pnpm test:watch

# Run tests in a CI environment.
pnpm test:ci

进行覆盖测试

然后开始使用 HTTP 服务器服务覆盖文件 ./coverage 文件夹.

您可以在您第一次运行此命令时看到空白页 。 只需刷新浏览器即可看到更新 .

pnpm test:coverage:serve

捐款

献礼真受欢迎!

请参看 贡献文件 了解如何开始为该项目作出贡献的更多信息.

帮助更新此项目 GitHub 赞助商。 。 。 .

GitHub Sponsor


警卫

如果你认为你发现了安全漏洞 我们鼓励你 负责地披露此事,不公开问题我们将调查所有合法的报告。 电子邮件 [email protected] 披露任何安全弱点.


API 参考

ExceptionOptions 接口

这个 ExceptionOptions 界面定义 Exception 阶级建筑师.

属性
财产类型默认说明
namestringExceptionName.Exception(备选) 错误界面名称 .
messagestring"未知错误"(备选) 包含有关错误的技术信息的错误信息 .
titlestring- 说吧(备选) 错误标题 .
descriptionstring- 说吧(备选) 错误描述 .
codeT- 说吧(须) 与例外相关的错误代码 .
isCriticalbooleanfalse(可选)表示错误是否为关键错误.
statusnumber- 说吧(可选)与例外相关的HTTP状态代码.
causeunknown- 说吧(备选) 错误的原因.

Exception 类

这个 Exception 类扩展 Error 对象和执行 ExceptionOptions 接口.

构造器

构造器初始化一个 Exception 选项.

参数
参数类型说明
optionsExceptionOptions(须) 包含错误选项的对象.
示例
import { Exception } from '@alessiofrittoli/exception'

try {
  throw new Exception({
    message: 'Resource not found'
    code: 'ERR:NOTFOUND',
    status: 404,
  })
} catch (error) {
  console.error(error)
}
静态方法
isException

用于检查对象是否为实例的工具方法 Exception 课.

委员会也支持JSON代表联合国 Exception 类(通常通过服务器回复返回).

示例
try {
  throw new Exception({ message: 'Something went wrong', code: 'ERR:UNKNOWN' })
} catch (error) {
  if (Exception.isException(error)) {
    // we can safely access `Exception` properties
    console.error(`Error [${error.code}]: ${error.message}`)
  } else {
    console.error(error)
  }
}
import { ExceptionName } from '@alessiofrittoli/exception'

/** Simulates JSON Exception returned by a server JSON Response. */
const error = JSON.parse(
  JSON.stringify(
    new Exception({
      name: ExceptionName.AbortError,
      message: 'Exception with custom name.',
      code: 0,
    }),
  ),
)

console.log(Exception.isException(error)) // Outputs: true
console.log(new Exception(error)) // Outputs: [Exception]

AbortError 类

这个 AbortError 类扩展 Exception 类 并提供一个预设配置,以便于使用.

构造器

构造器初始化一个 AbortError 选项.

参数
参数类型说明
optionsAbortErrorOptions包含错误选项的对象.
它延伸 ExceptionOptions 接口 并省略 name 属性.
这个 code 默认为 ErrorCode.ABORT 但可以选择定制.

中止错误使用情景
精确中止处理出错
import { AbortError } from '@alessiofrittoli/exception/abort'

try {
  const controller = new AbortController()
  const { signal } = controller

  button.addEventListener('click', () => {
    controller.abort(new AbortError({ message: 'User cancelled the request.' }))
  })

  await fetch(..., { signal })
} catch (error) {
  if (AbortError.isException(error)) {
    if (AbortError.isAbortError(error)) {
      // handle abort error
      console.log(error.code) // `error.code` is type of `ErrorCode.ABORT`.
      return
    }

    // handle other Exception errors
    return
  }

  // handle other unknown errors
}

使用自定义中止出错代码
import { AbortError } from '@alessiofrittoli/exception/abort'

enum ApplicationErrorCode {
  CUSTOM_CODE = 'ERR:CUSTOM_ABORT_CODE',
}

try {
  const controller = new AbortController()
  const { signal } = controller

  button.addEventListener('click', () => {
    controller.abort(
      new AbortError({
        message: 'User cancelled the request.',
        code: ApplicationErrorCode.CUSTOM_CODE,
      }),
    )
  })

  await fetch('', { signal })
} catch (error) {
  if (AbortError.isException<ApplicationErrorCode>(error)) {
    if (AbortError.isAbortError(error, ApplicationErrorCode.CUSTOM_CODE)) {
      // handle abort error
      console.log(error.code) // `error.code` is type of `CustomAbortCode.CUSTOM_CODE`.
      return
    }

    // handle other Exception errors
    return
  }

  // handle other unknown errors
}

由 所制

avatar
阿莱西奥·弗里托利
https://alessiofrittoli.it (英语) | (原始内容存档于2018-10-21) (英语). info.it

版本与发布记录

@alessiofrittoli/exception 共发布 24 个版本,首次发布于 2024/12/16;过去 12 个月发布了 9 个版本。

版本发布日期距今
4.3.0latest2026/11/044 天前
4.2.02026/10/2414 天前
4.1.12026/10/2316 天前
4.1.02026/10/061 个月前
4.0.02026/10/061 个月前
3.5.02025/12/0511 个月前

关于 @alessiofrittoli/exception 的常见问题

@alessiofrittoli/exception 是什么?

容易处理出错

如何安装 @alessiofrittoli/exception?

在项目目录运行 npm install @alessiofrittoli/exception,或使用 pnpm add / yarn add / bun add。

@alessiofrittoli/exception 支持 TypeScript 吗?

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

@alessiofrittoli/exception 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@alessiofrittoli/exception 需要什么版本的 Node.js?

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

@alessiofrittoli/exception 可以商用吗?

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

@alessiofrittoli/exception 的下载量有多少?

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

@alessiofrittoli/exception 还在维护吗?

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