Rumah >hujung hadapan web >tutorial js >Penggunaan ExtendableError dalam pakej ralat changeset
Terdapat import ini ditemui pada baris#2 dalam kod sumber pakej Changesets CLI
import { ExitError, InternalError } from "@changesets/errors";
Anda akan mempelajari konsep di bawah:
1. Pakej ExtendableError
2. ExitError
3. Ralat Dalaman
Anda akan mendapati ExitError memanjangkan ExtendableError.
Saya menganggap ExtendableError mungkin kelas lain yang ditakrifkan dalam fail yang sama, itu tidak berlaku.
Ia diimport daripada ralat boleh dipanjangkan. Apakah ini?
Kelas ralat boleh lanjut abstrak ringkas yang memanjangkan Ralat, yang mengendalikan nama ralat, mesej dan sifat tindanan.
npm install extendable-error - save
Contoh penggunaan ini daripada dokumen.
import ExtendableError from 'extendable-error'; class SomeError extends ExtendableError { constructor( message: string, public code: number ) { super(message); } } let someError = new SomeError('Some error', 0x0001);
Tujuan ExtendableError adalah untuk mencipta kelas ralat tersuai dalam JavaScript
dengan tingkah laku yang konsisten untuk pengendalian ralat. ExtendableError mengekalkan susunan ralat dan nama.
Saya meminta ChatGPT menyenaraikan perbezaan antara melanjutkan ExtendableError dan memanjangkan Ralat secara langsung dan di bawah dipilih daripada jawapan ChatGPT:
Warisan Ralat Langsung: Dalam sesetengah persekitaran JavaScript yang lebih lama (cth., versi lama Node.js atau sesetengah persekitaran bukan penyemak imbas), jika anda melanjutkan Ralat secara terus, sifat nama mungkin tidak sentiasa ditetapkan dengan betul kepada nama daripada kelas ralat (cth., ValidationError).
ExtendableError: Ia secara eksplisit menetapkan this.name = this.constructor.name;, yang memastikan bahawa sifat nama ditetapkan dengan betul merentas semua persekitaran, walaupun jika persekitaran tidak berkelakuan dengan betul
dengan warisan Ralat.
2. Kebolehpercayaan Jejak Tindanan:
Warisan Ralat Langsung: Dalam sesetengah persekitaran, terutamanya Node.js, menggunakan Error.captureStackTrace terus dalam kelas ralat tersuai anda memastikan surih tindanan menghala ke kelas ralat tersuai. Jika anda
jangan gunakan ini, surih tindanan mungkin tidak berkelakuan seperti yang diharapkan dan berkemungkinan menunjukkan lokasi yang salah dalam tindanan panggilan.
ExtendableError: Dengan menggunakan Error.captureStackTrace, ExtendableError memastikan bahawa surih tindanan dijana dengan betul, menunjuk ke lokasi ralat dilemparkan. Ini adalah kritikal dalam persekitaran
seperti Node.js di mana penyahpepijatan lebih bergantung pada surih tindanan.
Kod di bawah dipilih daripada pakej ralat Changesets
import { ExitError, InternalError } from "@changesets/errors";
Kod di bawah dipilih daripada pakej ralat Changets
npm install extendable-error - save
Di Thinkthroo, kami mengkaji projek sumber terbuka yang besar dan menyediakan panduan seni bina. Kami telah membangunkan Komponen boleh guna semula, dibina dengan tailwind, yang boleh anda gunakan dalam projek anda. Kami menawarkan perkhidmatan pembangunan Next.js, React dan Node.
Tempah mesyuarat dengan kami untuk membincangkan projek anda.
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
Atas ialah kandungan terperinci Penggunaan ExtendableError dalam pakej ralat changeset. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!