الكائن 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 | نعم | نعم |
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).
- معيار ECMAScript 5.1.
- معيار ECMAScript 1st Edition .