在 Changesets CLI 包源代码的第 2 行找到了这个导入
import { ExitError, InternalError } from "@changesets/errors";
您将学习以下概念:
1. ExtendableError 包
2. 退出错误
3. 内部错误
你会发现 ExitError 扩展了 ExtendableError。
我认为 ExtendableError 可能是同一文件中定义的另一个类,但事实并非如此。
它是从可扩展错误导入的。这是什么?
一个简单的抽象可扩展错误类,它扩展了 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 的答案:
直接错误继承:在某些较旧的 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 开发服务。
与我们预约会面讨论您的项目。
https://github.com/changesets/changesets/blob/main/packages/cli/src/index.ts#L9
https://github.com/changesets/changesets/blob/main/packages/errors/src/index.ts#L13
https://www.npmjs.com/package/extendable-error
以上是变更集错误包中的 ExtendableError 用法的详细内容。更多信息请关注PHP中文网其他相关文章!