معالجة الأخطاء في الكود غير المتزامن
استخدم try/catch مع await بأمان
معالجة الأخطاء في الكود غير المتزامن درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.
يمكن أن تفشل Futures
قد يفشل العمل غير المتزامن: قد تنتهي مهلة الخادم أو يكون الملف مفقودًا. ويمكن أن يكتمل Future بخطأ بدلًا من قيمة.
try وcatch مع await
غلّف await داخل try/catch، وسيرمي future الفاشل الخطأ عند ذلك السطر مباشرةً، تمامًا مثل الأخطاء المتزامنة العادية.
try {
final data = await fetch();
} catch (e) {
print("failed: $e");
}التقاط أنواع محددة
استخدم عبارة on للتعامل بدقة مع نوع واحد من الأخطاء، مع السماح بانتقال الإخفاقات الأخرى من دون تغيير.
try {
await load();
} on TimeoutException {
print("too slow");
}فحص الخطأ
أضف catch (e, s) لالتقاط كائن الخطأ وstack trace الخاص به، مما يجعل تصحيح الإخفاقات غير المتزامنة أسهل بكثير.
catch (e, s) {
print(e);
print(s);
}يُنفَّذ finally دائمًا
تُنفَّذ كتلة finally سواء نجحت await أم رمت خطأ، لذا فهي المكان المناسب لإغلاق الملفات أو إيقاف مؤشرات الانتظار.
try {
await save();
} finally {
closeFile();
}الرمي من async
استخدم throw داخل دالة async، وسيكتمل future المُعاد ببساطة بهذا الخطأ، ليصبح جاهزًا لالتقاطه من المستدعي.
Future<int> risky() async {
throw StateError("nope");
}الأخطاء في سلاسل then
من دون await، أرفق catchError بـ future لمعالجة الإخفاق في سلسلة بأسلوب then.
fetch().then(use).catchError(handle);التعافي باستخدام قيمة افتراضية
في catchError أو catch، يمكنك إعادة قيمة بديلة، مما يتيح لبرنامجك المتابعة بسلاسة بعد الإخفاق.
أخطاء Future غير المعالجة
يتحول future الفاشل الذي تم تجاهله إلى uncaught error قد يؤدي إلى تعطل البرنامج أو تسجيل خطأ واضح. احرص دائمًا على التقاط futures أو انتظارها.
إعادة الرمي عند الحاجة
استخدم rethrow داخل catch لتسجيل الإخفاق هنا، مع السماح لمعالج خارجي بالتعامل معه أيضًا.
catch (e) {
log(e);
rethrow;
}await داخل finally
يمكنك حتى استخدام await داخل finally لتنفيذ تنظيف غير متزامن، مثل تفريغ مخزن مؤقت، قبل أن تعيد الدالة النتيجة.
تحقق سريع
تحقق سريع من التقاط الأخطاء غير المتزامنة.
مراجعة: الأخطاء غير المتزامنة
تعلمت حماية await باستخدام try/catch، واستهداف الأنواع باستخدام on، وتنفيذ التنظيف في finally، والتعافي أو إعادة الرمي. 🛡️
الأسئلة الشائعة
هل درس «معالجة الأخطاء في الكود غير المتزامن» مجاني؟
نعم — نص درس «معالجة الأخطاء في الكود غير المتزامن» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.
ماذا ستتعلم في «معالجة الأخطاء في الكود غير المتزامن»؟
استخدم try/catch مع await بأمان تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟
لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «معالجة الأخطاء في الكود غير المتزامن»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟
نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- حلقة الأحداث والمهام الصغيرة
- إنشاء Futures وانتظارها
- معالجة الأخطاء في الكود غير المتزامن
- Future.wait والعمل المتوازي