عبارة متسامحة مع أخطاء JS، حتى في حالة حدوث أخطاء JS، لن تتم المطالبة بأي خطأ (لمنع ظهور رمز المثلث الأصفر في الركن الأيمن السفلي من المتصفح، وإلا ستكون تجربة المستخدم سيئة)
انسخ رمز الكود كما يلي:
window.onerror=function(){return true;}
ما يلي هو الحصول على معلومات استثناء js لتسهيل العثور على المشكلات للمطورين
1، حاول...امسك...
انسخ رمز الكود كما يلي:
<نوع البرنامج النصي = "نص/جافا سكريبت">
فار النص = ""
رسالة الوظيفة ()
{
يحاول
{
adddlert("مرحبًا بالضيف!")
}
قبض على (خطأ)
{
txt="يوجد خطأ في هذه الصفحة./n/n"
txt+="انقر فوق "موافق" لمواصلة عرض هذه الصفحة،/n"
txt+="انقر فوق "إلغاء الأمر" للعودة إلى الصفحة الرئيسية./n/n"
إذا (! تأكيد (نص))
{
document.location.href = "/index.html"
}
}
}
</script>
2، رمي
انسخ رمز الكود كما يلي:
<نوع البرنامج النصي = "نص/جافا سكريبت">
var x=prompt("الرجاء إدخال رقم بين 0 و10:"،")
يحاول
{
إذا (س> 10)
رمي "Err1"
وإلا إذا (س<0)
رمي "Err2"
آخر إذا (isNaN(x))
رمي "Err3"
}
قبض (إيه)
{
إذا (إيه = = "Err1")
تنبيه ("خطأ! القيمة كبيرة جدًا!")
إذا (إيه == "Err2")
تنبيه ("خطأ! القيمة صغيرة جدًا!")
إذا (إيه == "Err3")
تنبيه ("خطأ! القيمة ليست رقمًا!")
}
</script>
3، خطأ:
انسخ رمز الكود كما يلي:
<نوع البرنامج النصي = "نص/جافا سكريبت">
onerror=handleErr
فار النص = ""
دالة HandleErr(msg,url,l)
{
txt="يوجد خطأ في هذه الصفحة./n/n"
txt+="خطأ:" + msg + "/n"
txt+="URL: " + URL + "/n"
txt+="السطر:" + l + "/n/n"
txt+="انقر فوق "موافق" للمتابعة./n/n"
تنبيه (نص)
العودة صحيحا
}
رسالة الوظيفة ()
{
adddlert("مرحبًا بالضيف!")
}
</script>
معالجة الاستثناءات في Js
يمكنك استخدام حاول...التقاط في JavaScript لمعالجة الاستثناءات. على سبيل المثال:
حاول { foo.bar();} Catch (e) { تنبيه (e.name + ": " + e.message)؛}
في الوقت الحاضر، تتضمن استثناءات النظام التي قد نحصل عليها بشكل أساسي الأنواع الستة التالية:
EvalError: يظهر عند حدوث خطأ في تنفيذ التعليمات البرمجية في eval()
RangeError: يظهر عندما يكون المتغير الرقمي أو المعلمة خارج نطاقه الصالح
ReferenceError: يظهر عند إلغاء الرجوع إلى مرجع غير صالح
SyntaxError: يظهر عند حدوث خطأ في بناء الجملة أثناء تحليل التعليمات البرمجية في eval()
TypeError: يظهر عندما لا يكون المتغير أو المعلمة نوعًا صالحًا
خطأ URIE: يظهر عندما يتم تمرير معلمات غير صالحة إلى encodeURI() أو decodeURI()
الكائنات الاستثناء الستة المذكورة أعلاه جميعها ترث من كائن الخطأ. جميعهم يدعمون طريقتي البناء التاليتين:
خطأ جديد ()؛ خطأ جديد ("معلومات الاستثناء")؛
طريقة طرح الاستثناء يدويًا هي كما يلي:
انسخ رمز الكود كما يلي:
يحاول {
رمي خطأ جديد ("عفوًا!")؛}
قبض (ه) {
تنبيه (e.name + ": " + e.message)؛}
إذا كنت ترغب في تحديد نوع معلومات الاستثناء، فيمكنك القيام بذلك في ملف Catch:
انسخ رمز الكود كما يلي:
يحاول {
foo.bar();
} قبض (ه) {
إذا (مثال EvalError) {
تنبيه(e.name + ":: + e.message);
} وإلا إذا (مثال RangeError) {
تنبيه(e.name + ":" + e.message });
//إلخ
}
الخطأ له الخصائص الرئيسية التالية:
الوصف: وصف الخطأ (متوفر فقط في IE).
fileName: اسم ملف الخطأ (متوفر فقط في Mozilla).
رقم الخط: عدد الأسطر التي بها خطأ (متوفر فقط في موزيلا).
الرسالة: رسالة خطأ (نفس الوصف الموجود ضمن IE)
الاسم: نوع الخطأ.
الرقم: رمز الخطأ (متوفر فقط في IE).
المكدس: معلومات مكدس الأخطاء مثل Stack Trace في Java (متوفر فقط في Mozilla).
لذلك، من أجل فهم رسالة الخطأ بشكل أفضل، يمكننا تغيير جزء الالتقاط إلى النموذج التالي:
انسخ رمز الكود كما يلي:
يحاول {
foo.bar();
} قبض (ه) {
إذا (نوع المتصفح! = BROWSER_IE) {
تنبيه("name: " + e.name + "message: " + e.message + "lineNumber: " + e.lineNumber + "fileName: " + e.fileName + "stack: " + e.stack);
} آخر {
تنبيه ("الاسم: " + الاسم الإلكتروني + "رقم الخطأ: " + (الرقم الإلكتروني & 0xFFFF) + "الرسالة: " + الرسالة الإلكترونية ")؛ } } "
يمكن لأمر الرمي في JavaScript رمي أي كائن بالفعل، ويمكننا استلام هذا الكائن في وضع الالتقاط. على سبيل المثال:
انسخ رمز الكود كما يلي:
يحاول {
رمي تاريخ جديد ()؛ // يرمي كائن الوقت الحالي } Catch (e) { تنبيه (e.toLocaleString())؛ // استخدم التنسيق المحلي لعرض الوقت الحالي
}