الدرس 7 من 8

أخطاء الوعود

هدف الدرس

ما لا تنتظره لا تلتقطه

01

الشرح

لا يلتقط try/catch إلا ما يُرمى داخل كتلته، والوعد الذي لا تنتظره يُرفض لاحقًا بعد أن يكون التنفيذ قد خرج من الكتلة، فلا يراه catch أبدًا، والنتيجة صفحة تقول «تم الحفظ» مع أن الحفظ فشل.

والإصلاح كلمة واحدة، وهي await داخل try، فيصير الرفض خطأً عاديًّا يُرمى من السطر نفسه ويصل إلى catch.

وقد لا تريد الانتظار عمدًا أحيانًا، كأن ترسل إحصاءً لا يستحق أن يؤخّر المستخدم، لكن الرفض الذي لا يعالجه أحد لا يختفي، بل يظهر في الطرفية «رفضًا غير معالَج» ويضيع سببه، لذلك يحتاج كل وعد لا تنتظره إلى .catch خاصّ به.

02

المطلوب

أصلح save() لتُظهر في #msg السبب الحقيقي للفشل، ولا تعلن النجاح قبل أن يتمّ، وعالج رفض track دون أن تنتظره.

الفحوص

4 فحوص
  1. فشل الحفظ لا يظهر كأنه نجاح
  2. رسالة الفشل تذكر سببه الحقيقي
  3. النجاح لا يُعلَن قبل أن يتمّ
  4. لا يوجد رفض يضيع دون معالجة
03

تلميحات

0/3
دروس المسارأتممت 0 من 8

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

مستواه متوسّط، وفيه 8 دروس مجموع مدّتها ساعة ونصف.

index.html
المعاينة
index.html100%
–/4

اضغط «تشغيل وتصحيح» ليبدأ الفحص.

تجد 4 فحوص في بطاقة «المطلوب».

دروس المسارأتممت 0 من 8

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

مستواه متوسّط، وفيه 8 دروس مجموع مدّتها ساعة ونصف.