خطأ جافا سكريبت - Throw و Try to Catch
- الصفحة السابقة أولوية فحص فنيات JS
- الصفحة التالية مجال JS
try
الجملة تسمح لك باختبار الأخطاء في الكود.
catch
الجملة تسمح لك بمعالجة الأخطاء.
throw
جملة تسمح لك بإنشاء أخطاء مخصصة.
finally
يسمح لك بتنفيذ الكود، في try و catch، بغض النظر عن النتيجة.
الخطأ سيحدث دائمًا!
عند تنفيذ كود JavaScript، يمكن أن تحدث أنواع مختلفة من الأخطاء.
قد تكون الأخطاء أخطاء برمجة من قبل المبرمج، أو أخطاء بسبب إدخال غير صحيح، أو بسبب مشاكل غير متوقعة أخرى.
مثال
في هذا المثال، نستخدم alert
كتابة كود تنبيه لتحفيز خطأ متعمد:
<p id="demo"></p> <script> try { alert("مرحبًا بك في الزيارة!"); } catch(err) { document.getElementById("demo").innerHTML = err.message; } </script>
JavaScript يأخذ alert كخطأ، ثم ي�行ر على كود لمعالجة الخطأ.
JavaScript try و catch
try
الجملة تسمح لك بتحديد كود، حتى يتم الكشف عن الأخطاء أثناء التنفيذ.
catch
الجملة تسمح لك بتحديد كود للتنفيذ، إذا حدث خطأ في كود try.
تعليمات JavaScript try
و catch
يظهر بشكل مزدوج:
try { كود للاختبار } catch(err) { كود معالجة الخطأ }
JavaScript يرفع خطأ
عند حدوث خطأ، يُتوقف JavaScript عادةً ويظهر رسالة خطأ.
يُصطلح بهذا الشكل:سيقوم JavaScript بإلقاء استثناء (إلقاء خطأ).
سيقوم JavaScript بإنشاء استثناء يحتوي على اثنين من الخصائص: Object Error:name
و message
.
جملة throw
throw
جملة تسمح لك بإنشاء أخطاء مخصصة.
تقنيًا يمكنكإلقاء استثناء (إلقاء خطأ).
يمكن أن تكون الاستثناءات أيًا من JavaScript النصية، أو الرقمية، أو الحقيقية، أو الأشياء:
throw "Too big"; // نص استثناء throw 500; // رمز استثناء
إذا كان throw
مع try
و catch
باستخدامها معًا، يمكنك التحكم في مسار البرنامج وتوليد رسائل أخطاء مخصصة.
مثال التحقق من الإدخال
سيقوم هذا المثال بالتحقق من الإدخال. إذا كان القيمة خاطئة، سيتم إلقاء استثناء (err).
يتم التقاطع لهذا الاستثناء (err) بواسطة جملة catch ويُعرض رسالة خطأ مخصصة:
<!DOCTYPE html> <html> <body> <p>أدخل رقم بين 5 و 10:</p> <input id="demo" type="text"> <button type="button" onclick="myFunction()">اختبار الإدخال</button> <p id="message"></p> <script> function myFunction() { var message, x; message = document.getElementById("message"); message.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw " فارغ "; if(isNaN(x)) throw "ليس رقم"; x = Number(x); if(x < 5) throw " صغير "; if(x > 10) throw " كبير "; } catch(err) { message.innerHTML = "الإدخال هو " + err; } } </script> </body> </html>
التحقق من HTML
هذا الكود مجرد مثال.
عادة ما يدمج المتصفحات الحديثة JavaScript مع التحقق المدمج في HTML باستخدام قواعد التحقق المسبقة المحددة مسبقًا المحددة في خصائص HTML:
<input id="demo" type="number" min="5" max="10" step="1">
ستتعلم المزيد عن التحقق من صحة النماذج في الفصول اللاحقة من هذا الدليل.
جملة finally
finally
الجملة تسمح لك بتنفيذ الكود بعد try و catch، مهما كانت النتيجة:
try { // كود للاختبار } catch(err) { // كود معالجة الأخطاء } finally { // أي كود يتم تنفيذه مهما كان النتيجة }
مثال
function myFunction() { var message, x; message = document.getElementById("message"); message.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw "vakut"; if(isNaN(x)) throw "ليس رقم"; x = Number(x); if(x > 10) throw "كبير جدا"; if(x < 5) throw "صغير جدا"; } catch(err) { message.innerHTML = "خطأ: " + err + "."; } finally { document.getElementById("demo").value = ""; } }
Object Error
يملك JavaScript object error مدمج يقدم معلومات عن الأخطاء عند حدوثها.
يقدم object error الخاص بـ JavaScript اثنين من الخصائص المفيدة:name
و message
.
خصائص Object Error
الخصائص | وصف |
---|---|
name | تعيين أو العودة إلى اسم الخطأ |
message | تعيين أو العودة إلى رسالة الخطأ (خطأ من نوع字符串) |
قيم اسم الخطأ
يمكن لـ name الخاص بـ error العودة إلى ستة قيم مختلفة:
اسم الخطأ | وصف |
---|---|
EvalError | حصل خطأ في دالة eval() |
RangeError | حصل خطأ في نطاق الرقم |
ReferenceError | حصل خطأ في الاستدلال غير المشروع |
SyntaxError | حصل خطأ نحوي |
TypeError | حصل خطأ في النوع |
URIError | الخطأ الذي حصل في encodeURI() |
سأوضح لك التفاصيل الستة المختلفة لهذه القيم.
خطأ في التقييم
EvalError
إشارات إلى أخطاء في دالة eval()
إصدارات JavaScript المحدثة لن ترفع أي EvalError
الرجاء استخدام SyntaxError
استبدلها.
خطأ في النطاق
RangeError
سيتم إلقاءها عند استخدامك رقم خارج نطاق القيم المقبولة
على سبيل المثال: لا يمكنك تعيين عدد الأرقام الفعالة للرقم إلى 500.
مثال
var num = 1; try { num.toPrecision(500); // لا يمكن للعدد امتلاك 500 من الأرقام الفعالة } catch(err) { document.getElementById("demo").innerHTML = err.name; }
خطأ في الاستدلال
إذا كنت تستخدم (استدلال) متغير لم يتم إعلانه بعد، فإن ReferenceError
سيتم إلقاءها:
مثال
var x; try { x = y + 1; // لا يمكن استخدام y (الاستدلال) } catch(err) { document.getElementById("demo").innerHTML = err.name; }
خطأ نحوي
إذا قمت بحساب كود يحتوي على أخطاء نحوية، فإن SyntaxError
تم إلقاءها:
مثال
try { eval("alert('Hello)"); // عدم وجود ' سينتج عنه خطأ } catch(err) { document.getElementById("demo").innerHTML = err.name; }
خطأ في النوع
إذا كان القيمة التي تستخدمها ليست في نطاق القيم المتوقعة، فإن TypeError
تم إلقاءها:
مثال
var num = 1; try { num.toUpperCase(); // لا يمكنك تحويل الرقم إلى حروف كبيرة } catch(err) { document.getElementById("demo").innerHTML = err.name; }
خطأ URI
إذا كنت تستخدم حروف غير قانونية في وظيفة URI، فإن URIError
تم إلقاءها:
مثال
try { decodeURI("%%%"); // لا يمكنك تشفير هذه النقاط المئوية كـ URI } catch(err) { document.getElementById("demo").innerHTML = err.name; }
خصائص العنصر غير المعاييرية للـ Error
Mozilla و Microsoft قد أعدما تعريف خصائص العنصر غير المعاييرية للـ error:
- fileName (Mozilla)
- lineNumber (Mozilla)
- columnNumber (Mozilla)
- stack (Mozilla)
- description (Microsoft)
- number (Microsoft)
لا تستخدم هذه الخاصيات في المواقع العامة. لا تعمل هذه الخاصيات في جميع المتصفحات.
- الصفحة السابقة أولوية فحص فنيات JS
- الصفحة التالية مجال JS