الكائن Error في JavaScript

من موسوعة حسوب
اذهب إلى: تصفح، ابحث

الدالة البانية Error تُنشِئ كائن خطأ، والنسخ الكائنات من النوع Error ستُرمى عند حدوث أخطاء في وقت التنفيذ (runtime errors)؛ لاحظ أنَّ الكائن Error يُستخدَم أيضًا ككائن أساس للاستثناءات التي يُعرَّفها المستخدم. انظر أدناه للحصول على قائمة بأنواع الأخطاء القياسية المُضمَّنة في اللغة.

البنية العامة

new Error([message])

message

وسيط اختياري، وهو وصفٌ نصيٌّ للخطأ موجَّهٌ للبشر.

الوصف

الأخطاء التي تحدث في وقت التنفيذ (runtime errors) تؤدي إلى إنشاء ورمي كائنات Error جديدة.

أنواع الأخطاء

بجانب الدالة البانية Error العامة، هنالك ست دوال بانية للأخطاء الرئيسية في JavaScript.

EvalError

إنشاء كائن يُمثِّل أحد الأخطاء التي تقع عند استخدام الدالة العامة eval()‎.

RangeError

إنشاء كائن يُمثِّل أحد الأخطاء التي تقع عندما تكون قيمة متغير رقمي أو معاملٍ ما خارج المجال المسموح.

ReferenceError

إنشاء كائن يُمثِّل أحد الأخطاء التي تقع عند محاولة الإشارة إلى مرجعية غير صحيحة.

SyntaxError

إنشاء كائن يُمثِّل أحد الأخطاء التي تقع عند تفسير الشيفرات في الدالة eval().

TypeError

إنشاء كائن يُمثِّل أحد الأخطاء التي تقع عندما يكون نوع المتغير أو المعامل غير صحيح.

URIError

إنشاء كائن يُمثِّل أحد الأخطاء التي تقع عند تمرير وسائط غير صالحة إلى دالة encodeURI()‎ أو decodeURI()‎.

الخاصيات والدوال التابعة للدالة البانية Error

الخاصيات

Error.prototype

تُمثِّل هذه الخاصية كائن prototype التابعة للكائن Error.

الدوال

الدالة البانية Error لا تملك أيّة دوال تابعة لها مباشرةً، وإنما ترث بعض الخاصيات عبر سلسلة prototype.

الكائن prototype

جميع الكائنات من النوع Error ترث من الكائن Error.prototype؛ وكما في جميع الدوال البانية، يمكنك إجراء تغييرات إلى كائن prototype في الدالة البانية لكي تنعكس تلك التعديلات إلى جميع نسخ الكائن Error.

الخاصيات

Error.prototype.constructor

تُحديد الدالة التي ستُنشِئ كائن prototype لكائنات Error؛ راجع صفحة الخاصيةObject.prototype.constructor لمزيدٍ من التفاصيل.

Error.prototype.message

رسالة الخطأ.

Error.prototype.name

اسم الخطأ.

الدوال

Error.prototype.toString()‎

إعادة سلسلة نصيّة تُمثِّل الكائن المعني، وهي إعادة تعريف للدالة Object.prototype.toString.

أمثلة

رمي خطأ عام

عادةً ما نُنشِئ كائنات Error لرميها باستخدام الكلمة المحجوزة throw، يمكنك التعامل مع الخطأ باستخدام البنية try...catch:
try {
  throw new Error('Whoops!');
} catch (e) {
  console.log(e.name + ': ' + e.message);
}

التعامل مع خطأ من نوعٍ معيّن

إذا كنت تريد معالجة أخطاء من نوعٍ معيّن، فيمكنك اختبار نوع الخطأ باستخدام الخاصية constructor التابعة لكائن الخطأ، أو باستخدام الكلمة المحجوزة instanceof:
try {
  foo.bar();
} catch (e) {
  if (e instanceof EvalError) {
    console.log(e.name + ': ' + e.message);
  } else if (e instanceof RangeError) {
    console.log(e.name + ': ' + e.message);
  }
  // ...
}

دعم المتصفحات

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي نعم نعم 6 نعم نعم

مصادر ومواصفات