try/catch/finally وthrow والأخطاء المخصصة
استخدموا try/catch/finally، واطرحوا أخطاء بسيطة، وعرّفوا Error مخصصًا صغيرًا لرسائل أوضح
try/catch/finally وthrow والأخطاء المخصصة درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 1 من أصل 2. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 2 دروس في المجموع.
مقدمة إلى معالجة الأخطاء
الهدف: التقاط الأخطاء بأمان والحفاظ على استقرار البرامج.
- أساسيات try/catch
- استخدام throw مع رسالة واضحة
- استخدام finally للتنظيف
- إنشاء Error مخصص صغير

أساسيات try/catch
غلّفوا العمليات التي قد تنطوي على مخاطر باستخدام try. وفي catch، اعرضوا رسالة قصيرة ومفيدة.
// try/catch around risky code
try {
const data = JSON.parse("{\"name\":\"Ayla\"}");
console.log("Parsed:", data.name);
} catch (e) {
// e.message is short and useful on mobile
console.log("Failed to parse:", e.message);
}

أساسيات throw
استخدموا throw new Error("message") لإيقاف التنفيذ وشرح الخطأ الذي حدث.
// Throw when inputs are invalid
function doubleNumber(n) {
if (typeof n !== "number") {
throw new Error("Number required");
}
return n * 2;
}
try {
console.log(doubleNumber(4));
console.log(doubleNumber("4")); // will throw
} catch (e) {
console.log("Error:", e.message);
}

استخدام finally للتنظيف
يُنفَّذ finally سواء نجح try أم فشل، ولذلك يفيد في إغلاق الموارد.
// finally runs after try/catch — great for cleanup
let opened = false;
try {
opened = true;
console.log("Opened:", opened);
// Force an error to see finally still run
JSON.parse("{ bad }");
} catch (e) {
console.log("Caught:", e.message);
} finally {
opened = false;
console.log("Closed:", opened);
}

خطأ مخصص (مقدمة مبسطة)
أنشئوا InputError صغيرًا لمشكلات الإدخال. استخدموا instanceof لمعالجته على نحو مخصص.
// Make a small custom error
class InputError extends Error {
constructor(message) {
super(message);
this.name = "InputError";
}
}
function positive(n) {
if (typeof n !== "number") {
throw new InputError("Number required");
}
if (n <= 0) {
throw new InputError("Must be positive");
}
return n;
}
try {
console.log("OK:", positive(3));
console.log("Fail:", positive(0));
} catch (e) {
if (e instanceof InputError) {
console.log("Input problem:", e.message);
} else {
// Unknown error: rethrow or log differently
console.log("Unexpected:", e.message);
}
}

نصائح وقائمة تحقق
نصائح:
- تحققوا من المدخلات مبكرًا؛ وأطلقوا رسائل قصيرة.
- استخدموا finally للتنظيف، مثل إغلاق الأعلام والمؤقتات وغير ذلك.
- لا تتجاهلوا الأخطاء بصمت؛ سجّلوها بإيجاز أو أعيدوا إطلاقها.

اختبار finally
تحقق سريع: سلوك finally.

مراجعة
مراجعة: غلّفوا التعليمات البرمجية التي قد تنطوي على مخاطر باستخدام try/catch، وأطلقوا أخطاء قصيرة ومفيدة، واستخدموا finally للتنظيف، وأنشئوا أخطاء مخصصة صغيرة لمعالجة أوضح.

الأسئلة الشائعة
هل درس «try/catch/finally وthrow والأخطاء المخصصة» مجاني؟
نعم — نص درس «try/catch/finally وthrow والأخطاء المخصصة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 2 دروس في المجموع.
ماذا ستتعلم في «try/catch/finally وthrow والأخطاء المخصصة»؟
استخدموا try/catch/finally، واطرحوا أخطاء بسيطة، وعرّفوا Error مخصصًا صغيرًا لرسائل أوضح تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟
لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 2.
كم من الوقت يستغرق درس «try/catch/finally وthrow والأخطاء المخصصة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟
نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- try/catch/finally وthrow والأخطاء المخصصة
- البرمجة الدفاعية والتحقق من المدخلات