在 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中文網其他相關文章!