وقتی چیزی در یک برنامه یا بخشی از کد اشتباه یا غیرمنتظره باشد، گزارش کردن خطاها مفید است.
خطاها اشیایی در JavaScript هستند.
ویژگی اصلی این شیء message است:
const error = new Error('Oops, something went wrong');
console.log(error.message);
// => "Oops, something went wrong"
با استفاده از نحوهی نگارش throw میتوانید یک خطا پرتاب کنید.
throw new Error('Oops');
وقتی خطایی پرتاب میشود، اجرای کنونی متوقف میشود و در نخستین بلوک catch از پشتهی فراخوانی ادامه مییابد.
try {
throw new Error('Oops');
} catch (error) {
console.log(error.message);
// => "Oops"
}
مانند هر کلاس دیگری در JavaScript، زیرکلاسها میتوانند با استفاده از کلیدواژهی extends از Error ارثبری کنند و خطاهای سفارشی بسازند.
نحوهی نگارش instanceof بررسی میکند که آیا خطای گرفتهشده نمونهای از یک زیرکلاس خاص از Error است یا نه.
class CustomError extends Error {}
try {
// ... Code that may throw an error
} catch (error) {
if (error instanceof CustomError) {
console.log('The error thrown is an instance of the CustomError');
}
}
علاوه بر شیء Error، اشیای خطای توکار دیگری هم وجود دارند. میتوانید اطلاعات بیشتر دربارهی آن را اینجا بخوانید.
همچنین میتوانید نوع خطای سفارشی خودتان را با ساختن کلاسی که یکی از انواع خطای توکار را گسترش میدهد، تعریف کنید.
class MyCustomError extends Error {}
اگرچه نحوهی نگارش throw معمولاً برای پرتاب یک شیء خطا به کار میرود، JavaScript انعطافپذیر است و اجازه میدهد یک string، یک null یا هر نوع دادهی اولیهی دیگری را پرتاب کنید.
اگرچه این در JavaScript استاندارد نیست، بیشتر محیطهای JavaScript ویژگی stack را روی اشیای خطا پیادهسازی میکنند و به این ترتیب میتوانید ردپای پشتهی خطایی را که پرتاب شده است به دست آورید.