The Code Fix

🟨 شرح جافاسكريبت

معالجة الأخطاء والتنقيح

أنواع الأخطاء

// خطأ صياغة (Syntax) — كود غير صالح
let x = ;

// خطأ مرجعي (Reference) — متغيّر غير معرّف
console.log(undefinedVar);

// خطأ نوع (Type) — عملية على نوع خاطئ
null.toUpperCase();

التعامل مع الأخطاء: try ... catch

يمنع الخطأ من إيقاف البرنامج كله:

try {
  let data = JSON.parse("نص غير صالح");
} catch (error) {
  console.log("حدث خطأ:", error.message);
} finally {
  console.log("يُنفَّذ دائمًا");   // اختياري
}
  • try: الكود الذي قد يخطئ.
  • catch: ما يحدث عند الخطأ (يستقبل كائن الخطأ).
  • finally: يُنفَّذ في كل الأحوال (تنظيف).

إطلاق أخطاء مخصّصة: throw

function divide(a, b) {
  if (b === 0) {
    throw new Error("لا يمكن القسمة على صفر");
  }
  return a / b;
}

try {
  divide(10, 0);
} catch (e) {
  console.log(e.message);   // "لا يمكن القسمة على صفر"
}

أدوات التنقيح (Debugging)

1) console — صديقك الأول

console.log("قيمة x:", x);
console.table(arrayOfObjects);   // عرض جدولي
console.error("خطأ");

2) أدوات المطوّر (DevTools)

افتح بـ F12:

  • Console: الأخطاء والرسائل.
  • Sources: ضع نقاط توقّف (Breakpoints) لإيقاف التنفيذ وفحص القيم سطرًا بسطر.
  • Network: لفحص طلبات fetch.

3) debugger

function calc(x) {
  debugger;   // يوقف التنفيذ هنا عند فتح DevTools
  return x * 2;
}

نصائح للتنقيح

  • اقرأ رسالة الخطأ كاملةً — تخبرك بالنوع والسطر.
  • اطبع القيم قبل وبعد السطر المشتبه به.
  • قسّم المشكلة — علّق أجزاءً حتى تعزل السبب.

الأخطاء الشائعة

  • ❌ تجاهل الأخطاء بـ catch فارغ → يخفي المشاكل.
  • ❌ عدم قراءة رسالة الخطأ → هي الدليل الأهم.
  • ❌ الإفراط في try/catch حول كل سطر → ضعه حول ما قد يفشل فعلًا.

خلاصة

try/catch/finally يعالج الأخطاء بأمان، وthrow new Error يطلق أخطاء مخصّصة. للتنقيح: console.log، ونقاط التوقّف في DevTools، وdebugger. قراءة رسائل الأخطاء بعناية هي مهارة المبرمج الأهم.