جملة try/catch/finally في JavaScript

التعريف والاستخدام

تعالج جملة try/catch/finally الأخطاء التي قد تحدث في كتلة الأوامر، بينما تظل الأوامر تعمل.

يمكن أن تكون الأخطاء بسبب الأخطاء البرمجية التي ارتكبها المبرمج، أو الأخطاء التي تسببها المدخلات الخاطئة، أو حالات غير متوقعة أخرى.

حاول جملة يسمح لك بتعريف كتلة من الأوامر التي يجب اختبارها عند التنفيذ.

إذا حدث خطأ في كتلة try، تسمح كتلة catch بتعريف كتلة الأوامر التي يجب تنفيذها.

كتلة finally تسمح لك بتنفيذ الأوامر بعد كتلة try و catch، بغض النظر عن النتائج.

ملاحظة:كتلة catch و كتلة finally هما اختياريتان، ولكن يجب استخدام إحداهما (أو كليهما) عند استخدام جملة try.

نصيحة:عند حدوث خطأ، يوقف JavaScript عادةً، ويقوم بإنشاء رسالة خطأ. استخدم جملة throw لإنشاء أخطاء مخصصة (لإطلاق استثناءات). إذا استخدمت throw مع try و catch، يمكنك التحكم في تدفق البرنامج وتوليد رسائل خطأ مخصصة.

للتعرف على المزيد حول أخطاء JavaScript، يرجى قراءة دروس أخطاء JavaScript.

مثال

في هذا المثال، قمنا بكتابة خطأ في الكود (في كتلة try).

بمجرد تنفيذ هذا المثال، يجب أن يُظهر "مرحبًا بالضيف!"، لكن تم كتابة اسم alert بشكل غير صحيح.

كتلة catch ستقوم باستقبال الأخطاء، وتنفيذ الأوامر للتعامل معها:

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
try {
  adddlert("مرحبًا بالضيف!");
}
catch(err) {
  document.getElementById("demo").innerHTML = err.message;
}
</script>
</body>
</html>

جربها بنفسك

هناك أمثلة TIY أكثر في الأسفل من الصفحة.

النحو

try {
  tryCode - كتلة الأوامر التي يجب تجربتها
}
catch(err) {
  catchCode - كتلة الأوامر لمعالجة الأخطاء
} 
finally {
  finallyCode - كتلة الأوامر التي يجب تنفيذها بغض النظر عن نتائج try / catch
}

قيمة المعامل

معامل وصف
tryCode مطلوب. يجب اختبار كتلة الأوامر هذه أثناء التنفيذ.
err مطلوب، إذا استخدمت مع catch. تحديد المتغير المحلي المشار إليه بالخطأ. يمكن للمتغير التأشير إلى Object Error (يحتوي على معلومات حول الخطأ الذي حدث، مثل رسالة "'addlert' is not defined"). إذا كان الخطأ قد تم إنشاؤه بواسطة جملة throw، فإن المتغير يشير إلى الكائن المحدد في جملة throw (انظر "مزيد من الأمثلة").
catchCode اختياري. يجب تنفيذ كتلة الأوامر هذه إذا حدث خطأ في كتلة try. إذا لم يحدث خطأ، لن تنفذ هذه الكتلة الأوامر أبدًا.
finallyCode اختياري. يجب تنفيذ كتلة الأوامر هذه بغض النظر عن نتائج try / catch.

تفاصيل تقنية

إصدار JavaScript: ECMAScript 3

مزيد من الأمثلة

مثال

في هذا المثال يتم التحقق من الإدخال. إذا كان القيمة خاطئة، يتم رمي الاستثناء (err).

استخدام جملة catch لالتقاط الاستثناءات (err) وعرض رسالة خطأ مخصصة:

<!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 "is Empty";
    if(isNaN(x)) throw "not a number";
    if(x > 10) throw "too high";
    if(x < 5) throw "too low";
  }
  catch(err) {
    message.innerHTML = "Input " + err;
  }
}
</script>
</body>
</html>

جربها بنفسك

مثال

استخدام جملة finally سيسمح لك تنفيذ الكود بعد try و catch بغض النظر عن النتيجة:

function myFunction()
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    if(x == "") throw "Empty";
    if(isNaN(x)) throw "Not a number";
    if(x > 10) throw "Too high";
    if(x < 5) throw "Too low";
  }
  catch(err) {
    message.innerHTML = "خطأ: " + err + ".";
  }
  finally {
    document.getElementById("demo").value = "";
  }
}

جربها بنفسك

يدعم المتصفح

الجملة الشروم IE Firefox Safari Opera
try/catch/finally الدعم الدعم الدعم الدعم الدعم

الصفحات ذات الصلة

دروس JavaScript:خطأ JavaScript

دليل JavaScript:جملة throw في JavaScript