Heim >Web-Frontend >js-Tutorial >ExtendableError-Verwendung im Changeset-Fehlerpaket

ExtendableError-Verwendung im Changeset-Fehlerpaket

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-10 15:40:10417Durchsuche

Dieser Import befindet sich in Zeile 2 im Quellcode des Changesets-CLI-Pakets

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

Sie lernen die folgenden Konzepte kennen:

1. ExtendableError-Paket

2. ExitError

3. Interner Fehler

ExtendableError usage in changesets errors package

ExtendableError

Sie werden feststellen, dass ExitError ExtendableError erweitert.

Ich ging davon aus, dass ExtendableError wahrscheinlich eine andere Klasse ist, die in derselben Datei definiert ist, das war jedoch nicht der Fall.

ExtendableError usage in changesets errors package

Es wird aus dem erweiterbaren Fehler importiert. Was ist das?

Eine einfache abstrakte erweiterbare Fehlerklasse, die Error erweitert und den Fehlernamen, die Meldung und die Stapeleigenschaft verarbeitet.

Installieren

npm install extendable-error - save

Verwendung

Dieses Anwendungsbeispiel aus den Dokumenten.

import ExtendableError from 'extendable-error';

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

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

Zweck von ExtendableError ist die Erstellung benutzerdefinierter Fehlerklassen in JavaScript

mit konsistentem Verhalten zur Fehlerbehandlung. ExtendableError behält den Fehlerstapel und den Namen bei.

Extending ExtendableError vs. Extending Error

Ich habe ChatGPT gebeten, die Unterschiede zwischen der Erweiterung von ExtendableError und der Erweiterung von Error direkt aufzulisten. Nachfolgend habe ich eine Auswahl aus der ChatGPT-Antwort getroffen:

  1. Nichtübereinstimmung der Namenseigenschaft (in einigen Umgebungen):
  • Direkte Fehlervererbung: In einigen älteren JavaScript-Umgebungen (z. B. älteren Versionen von Node.js oder einigen Nicht-Browser-Umgebungen) wird die Namenseigenschaft möglicherweise nicht immer korrekt auf den Namen festgelegt, wenn Sie Error direkt erweitern der Fehlerklasse (z. B. ValidationError).

  • ExtendableError: Es legt explizit this.name = this.constructor.name; fest, wodurch sichergestellt wird, dass die Namenseigenschaft in allen Umgebungen korrekt festgelegt wird, auch wenn sich die Umgebung nicht korrekt verhält

    mit Fehlervererbung.

2. Stack-Trace-Zuverlässigkeit:

  • Direkte Fehlervererbung: In einigen Umgebungen, insbesondere Node.js, stellt die direkte Verwendung von Error.captureStackTrace in Ihrer benutzerdefinierten Fehlerklasse sicher, dass der Stack-Trace auf die benutzerdefinierte Fehlerklasse verweist. Wenn Sie

    Verwenden Sie dies nicht, da sich der Stack-Trace möglicherweise nicht wie erwartet verhält und möglicherweise die falsche Position im Aufrufstack anzeigt.

  • ExtendableError: Durch die Verwendung von Error.captureStackTrace stellt ExtendableError sicher, dass der Stack-Trace korrekt generiert wird und auf die Stelle zeigt, an der der Fehler ausgelöst wurde. Dies ist in Umgebungen von entscheidender Bedeutung

    wie Node.js, wo das Debuggen stärker auf Stack-Traces angewiesen ist.

ExitError

Der folgende Code stammt aus dem Changesets-Fehlerpaket

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

InternalError

Der folgende Code stammt aus dem Changets-Fehlerpaket

npm install extendable-error - save

Über uns:

Bei Thinkthroo studieren wir große Open-Source-Projekte und stellen Architekturführer zur Verfügung. Wir haben mit Rückenwind wiederverwendbare Komponenten entwickelt, die Sie in Ihrem Projekt nutzen können. Wir bieten Next.js-, React- und Node-Entwicklungsdienste an.

Buchen Sie einen Termin mit uns, um Ihr Projekt zu besprechen.

ExtendableError usage in changesets errors package

Referenzen:

  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

Das obige ist der detaillierte Inhalt vonExtendableError-Verwendung im Changeset-Fehlerpaket. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Die Bausteine ​​des Web 5Nächster Artikel:Die Bausteine ​​des Web 5