التبديل على أخطاء محددة
أنشئوا تفرعاً بحسب الخطأ المُعاد
التبديل على أخطاء محددة درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.
ليست كل الأخطاء متساوية
نادرًا ما تناسب قيمة بديلة واحدة كل حالات الفشل. فغالبًا ما يحتاج الملف المفقود والإدخال غير الصالح إلى معاملة مختلفة، ولذلك تريدون التفريع بحسب الخطأ الذي حدث.
التقاط الخطأ ثم استخدام switch
التقطوا الخطأ من catch، ثم مرروه إلى switch. ويمكن لكل حالة الاستجابة لخطأ محدد بأسلوبها الخاص.
open(path) catch |err| switch (err) {
error.NotFound => create(path),
else => return err,
};الأخطاء قيم لـ switch
الخطأ مثل error.NotFound قيمة عادية، ولذلك يطابقه switch كما يطابق عددًا صحيحًا أو وسم تعداد.
switch (err) {
error.Timeout => retry(),
error.Denied => reportDenied(),
}يجب أن يكون switch شاملًا
يجب أن يغطي switch على خطأ كل الأخطاء الممكنة في المجموعة. ويرفض Zig الترجمة إذا كانت حالة واحدة فقط مفقودة.
غطّوا الباقي باستخدام else
أضيفوا فرع else لالتقاط أي خطأ لم تسمّوه. ويحافظ ذلك على شمول switch من دون سرد كل قيمة.
switch (err) {
error.NotFound => createDefault(),
else => return err,
}كل فرع يعيد قيمة
بما أن switch تعبير، يمكن لكل فرع إنتاج قيمة. ثم يعيد catch بالكامل ما ينتجه الفرع المطابق.
const n = parse(s) catch |e| switch (e) {
error.Empty => 0,
else => -1,
};تجميع الأخطاء بفواصل
سردوا عدة أخطاء في فرع واحد، تفصل بينها فواصل، عندما تشترك في الاستجابة نفسها. ويساعد ذلك في إبقاء الحالات ذات الصلة مرتبة ومجتمعة.
switch (err) {
error.Timeout, error.Reset => retry(),
else => return err,
}أعيدوا رمي ما لا تستطيعون معالجته
يمكنكم في أحد الفروع استخدام return لإرجاع الخطأ وتمريره إلى الأعلى. عالجوا الحالات التي تفهمونها، ودعوا المستدعي يتولى الباقي.
else => return err,اقترنوا بـ try أولًا
غالبًا ما تستخدمون try للمسار المعتاد، ثم تستخدمون switch فقط للأخطاء التي تحتاج فعلًا إلى منطق مخصص، مما يحافظ على نظافة المسار الناجح.
الوضوح عبر التحديد
يوثق استخدام switch على الأخطاء حالات الفشل التي تتوقعونها بدقة. ويرى القارئ كل حالة وكيف يستجيب لها الكود.
المصرّف يحميكم
لأن switch يجب أن يكون شاملًا، فإن إضافة خطأ جديد لاحقًا تجبركم على معالجته. وتتحول الحالات المنسية إلى أخطاء بناء، لا إلى أخطاء منطقية.
تحقق سريع
تستخدمون switch على خطأ ملتقط، لكنكم تسردون بعض القيم فقط. ماذا يطلب Zig؟
مراجعة
التقطتم خطأً واستخدمتم switch للتفريع بحسب الخطأ، وتجميع الحالات ذات الصلة، وإعادة رمي الباقي. ويحافظ المصرّف على اكتماله. ✅
تعلم Zig مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «التبديل على أخطاء محددة» مجاني؟
نعم — نص درس «التبديل على أخطاء محددة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.
ماذا ستتعلم في «التبديل على أخطاء محددة»؟
أنشئوا تفرعاً بحسب الخطأ المُعاد تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟
لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «التبديل على أخطاء محددة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟
نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- التعافي باستخدام catch
- التبديل على أخطاء محددة
- errdefer لتنظيف ما بعد الفشل
- لف الأخطاء وإعادة طرحها