throw وtry وcatch
اكتشف حالات الفشل واستجب لها
throw وtry وcatch درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.
عندما تسوء الأمور
تواجه البرامج مشكلات مثل الإدخال غير الصحيح والملفات المفقودة والعمليات الحسابية الخاطئة. يشير Dart إلى هذه المشكلات باستخدام استثناء بدلًا من التصرف بطريقة خاطئة بصمت. 🚨
إطلاق استثناء
يمكنكم رفع المشكلة بأنفسكم باستخدام throw. فهذا يوقف التدفق الطبيعي عند موضع حدوثها، وينقل التحكم إلى معالج.
throw Exception('Something failed');يمكنكم إطلاق أي شيء
يسمح Dart بإطلاق أي كائن تقريبًا باستخدام throw، حتى String. لكن من الناحية العملية، أطلقوا كائنات Exception أو Error الحقيقية لتبقى المعالجات واضحة.
throw FormatException('Bad number');حماية الشفرة المعرضة للفشل
ضعوا الشفرة التي قد تفشل داخل كتلة try. ينفذها Dart بشكل طبيعي، لكنه يبقى مستعدًا للتعامل مع أي عملية إطلاق.
try {
risky();
}التقاط المشكلة
تعمل كتلة catch فقط عندما تطلق كتلة try استثناءً. وتحصل على الكائن المُطلَق لتتمكنوا من فحصه والاستجابة له.
try {
risky();
} catch (e) {
print('Caught: $e');
}يتجاوز التدفق بقية الشفرة
عند تنفيذ throw، يتم تجاوز بقية كتلة try فورًا. وينتقل Dart مباشرةً إلى كتلة catch المطابقة.
قراءة كائن الخطأ
يحتوي المتغير في catch (e) على كل ما تم إطلاقه. وعادةً ما تؤدي طباعته إلى عرض رسالة مفيدة تصف المشكلة.
catch (e) {
print(e);
}الحصول على تتبع المكدس
أضيفوا متغيرًا ثانيًا إلى catch للحصول على تتبع المكدس. فهو يوضح مسار الاستدعاءات الذي أدى إلى الفشل، مما يسهل تصحيح الأخطاء.
catch (e, stack) {
print(stack);
}استعيدوا الحالة بدلًا من الانهيار
الهدف الأساسي من الالتقاط هو التعافي. فبدلًا من انهيار البرنامج، يمكنكم تسجيل الخطأ أو إعادة المحاولة أو عرض بديل مناسب للمستخدم.
عدم الالتقاط يعني الانهيار
إذا لم تلتقط أي جهة الاستثناء المُطلَق، فإنه ينتشر صعودًا وينهار البرنامج مع طباعة خطأ في وحدة التحكم.
مثال كامل
إليكم النمط الكامل: عملية throw داخل try، ثم التقاطها ومعالجتها بسلاسة بحيث يستمر التنفيذ بعدها.
try {
throw Exception('Oops');
} catch (e) {
print('Handled: $e');
}تحقق سريع
أي كتلة تستجيب فعليًا للاستثناء المُطلَق؟
مراجعة
أصبحتم الآن تشيرون إلى المشكلات باستخدام throw، وتحميون الشفرة المعرضة للفشل داخل try، وتتعافون منها داخل catch. ويحافظ هذا الثلاثي على استمرار البرنامج. 🎉
تعلم Dart مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «throw وtry وcatch» مجاني؟
نعم — نص درس «throw وtry وcatch» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.
ماذا ستتعلم في «throw وtry وcatch»؟
اكتشف حالات الفشل واستجب لها تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟
لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «throw وtry وcatch»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟
نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.