首页 >web前端 >js教程 >变更集错误包中的 ExtendableError 用法

变更集错误包中的 ExtendableError 用法

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-10 15:40:10416浏览

在 Changesets CLI 包源代码的第 2 行找到了这个导入

import { ExitError, InternalError } from "@changesets/errors";

您将学习以下概念:

1. ExtendableError 包

2. 退出错误

3. 内部错误

ExtendableError usage in changesets errors package

可扩展错误

你会发现 ExitError 扩展了 ExtendableError。

我认为 ExtendableError 可能是同一文件中定义的另一个类,但事实并非如此。

ExtendableError usage in changesets errors package

它是从可扩展错误导入的。这是什么?

一个简单的抽象可扩展错误类,它扩展了 Error,它处理错误名称、消息和堆栈属性。

安装

npm install extendable-error - save

用法

文档中的使用示例。

import ExtendableError from 'extendable-error';

class SomeError extends ExtendableError {
 constructor(
 message: string,
 public code: number
 ) {
 super(message);
 }
}

let someError = new SomeError('Some error', 0x0001);

ExtendableError 的目的是在 JavaScript 中创建自定义错误类

具有一致的错误处理行为。 ExtendableError 保留错误堆栈和名称。

扩展可扩展错误与扩展错误

我要求 ChatGPT 列出扩展 ExtendableError 和直接扩展 Error 之间的区别,下面摘自 ChatGPT 的答案:

  1. 名称属性不匹配(在某些环境中):
  • 直接错误继承:在某些较旧的 JavaScript 环境中(例如,旧版本的 Node.js 或某些非浏览器环境),如果直接扩展 Error,name 属性可能并不总是正确设置为 name错误类别(例如 ValidationError)。

  • ExtendableError:它显式设置 this.name = this.constructor.name;,这确保在所有环境中正确设置 name 属性,即使环境行为不正确

    带有错误继承。

2.堆栈跟踪可靠性:

  • 直接错误继承:在某些环境中,尤其是 Node.js,直接在自定义错误类中使用 Error.captureStackTrace 可确保堆栈跟踪指向自定义错误类。如果你

    不要使用它,堆栈跟踪可能不会按预期运行,并且可能会显示调用堆栈中的错误位置。

  • ExtendableError:通过使用 Error.captureStackTrace,ExtendableError 确保正确生成堆栈跟踪,指向引发错误的位置。这在环境中至关重要

    就像 Node.js 一样,调试更依赖于堆栈跟踪。

退出错误

以下代码选自Changesets错误包

import { ExitError, InternalError } from "@changesets/errors";

内部错误

以下代码选自Changets错误包

npm install extendable-error - save

关于我们:

在 Thinkthroo,我们研究大型开源项目并提供架构指南。我们开发了使用 Tailwind 构建的可重用组件,您可以在项目中使用它们。我们提供 Next.js、React 和 Node 开发服务。

与我们预约会面讨论您的项目。

ExtendableError usage in changesets errors package

参考资料:

  1. https://github.com/changesets/changesets/blob/main/packages/cli/src/index.ts#L9

  2. https://github.com/changesets/changesets/blob/main/packages/errors/src/index.ts#L13

  3. https://www.npmjs.com/package/extendable-error

以上是变更集错误包中的 ExtendableError 用法的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn