首頁 >web前端 >js教程 >變更集錯誤包中的 ExtendableError 用法

變更集錯誤包中的 ExtendableError 用法

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-10 15:40:10500瀏覽

在 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