خط

خطا در JavaScript

19 تمرین

درباره‌ی خطا

وقتی چیزی در یک برنامه یا بخشی از کد اشتباه یا غیرمنتظره باشد، گزارش کردن خطاها مفید است.

خطاها اشیایی در 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 را روی اشیای خطا پیاده‌سازی می‌کنند و به این ترتیب می‌توانید ردپای پشته‌ی خطایی را که پرتاب شده است به دست آورید.

ویرایش از طریق GitHub این پیوند در پنجره یا زبانه‌ی جدیدی باز می‌شود

خطا را یاد بگیرید