Maison >interface Web >js tutoriel >Utilisation d'ExtendableError dans le package d'erreurs des ensembles de modifications
Cette importation se trouve à la ligne n°2 dans le code source du package CLI Changesets
import { ExitError, InternalError } from "@changesets/errors";
Vous apprendrez les concepts ci-dessous :
1. Package ExtendableError
2. SortieErreur
3. Erreur interne
Vous constaterez qu'ExitError étend ExtendableError.
J'ai supposé qu'ExtendableError était probablement une autre classe définie dans le même fichier, ce n'était pas le cas.
Il est importé depuis extendable-error. Qu'est-ce que c'est ?
Une simple classe d'erreur abstraite extensible qui étend Error, qui gère le nom de l'erreur, le message et la propriété de la pile.
npm install extendable-error - save
Cet exemple d'utilisation tiré de la documentation.
import ExtendableError from 'extendable-error'; class SomeError extends ExtendableError { constructor( message: string, public code: number ) { super(message); } } let someError = new SomeError('Some error', 0x0001);
Le but d'ExtendableError est de créer des classes d'erreur personnalisées en JavaScript
avec un comportement cohérent pour la gestion des erreurs. ExtendableError préserve la pile et le nom des erreurs.
J'ai demandé à ChatGPT de répertorier les différences entre l'extension d'ExtendableError et l'extension d'Error directement et ci-dessous est sélectionné dans la réponse de ChatGPT :
Héritage direct des erreurs : dans certains environnements JavaScript plus anciens (par exemple, les anciennes versions de Node.js ou certains environnements sans navigateur), si vous étendez directement Error, la propriété name peut ne pas toujours être correctement définie sur le nom. de la classe d'erreur (par exemple, ValidationError).
ExtendableError : il définit explicitement this.name = this.constructor.name;, ce qui garantit que la propriété name est définie correctement dans tous les environnements, même si l'environnement ne se comporte pas correctement
avec héritage d'erreur.
2. Fiabilité de la trace de la pile :
Héritage direct des erreurs : dans certains environnements, en particulier Node.js, l'utilisation de Error.captureStackTrace directement dans votre classe d'erreur personnalisée garantit que la trace de la pile pointe vers la classe d'erreur personnalisée. Si vous
ne l'utilisez pas, la trace de la pile pourrait ne pas se comporter comme prévu et afficher le mauvais emplacement dans la pile d'appels.
ExtendableError : en utilisant Error.captureStackTrace, ExtendableError garantit que la trace de la pile est correctement générée, pointant vers l'emplacement où l'erreur a été générée. Ceci est critique dans les environnements
comme Node.js où le débogage dépend davantage des traces de pile.
Le code ci-dessous est extrait du package d'erreurs Changesets
import { ExitError, InternalError } from "@changesets/errors";
Le code ci-dessous est extrait du package d'erreurs Changets
npm install extendable-error - save
Chez Thinkthroo, nous étudions les grands projets open source et fournissons des guides architecturaux. Nous avons développé des composants réutilisables, construits avec tailwind, que vous pouvez utiliser dans votre projet. Nous proposons des services de développement Next.js, React et Node.
Prenez rendez-vous avec nous pour discuter de votre projet.
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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!