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

ExtendableError-Verwendung im Changeset-Fehlerpaket

Mary-Kate Olsen
Freigeben: 2024-12-10 15:40:10
Original
457 Leute haben es durchsucht

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

import { ExitError, InternalError } from "@changesets/errors";
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

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);
Nach dem Login kopieren

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";
Nach dem Login kopieren
Nach dem Login kopieren

InternalError

Der folgende Code stammt aus dem Changets-Fehlerpaket

npm install extendable-error - save
Nach dem Login kopieren
Nach dem Login kopieren

Ü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!

Quelle:dev.to
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage