0Pricing
Swift Academy · درس

do/catch وتعريف الأخطاء (Enums)

عرّف Enums للأخطاء، وارمِها من الدوال، وعالج حالات الفشل باستخدام أنماط do/catch، بما في ذلك الحالات المحددة وcatch let وcatch العام.

do/catch وتعريف الأخطاء (Enums) درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 3 دروس في المجموع.

نظرة عامة

يركز هذا الدرس على تعريف أخطاء ذات أنواع محددة ومعالجتها باستخدام do/catch. ستطلق تعدادًا وتلتقط حالات محددة منه لتوفير مسارات واضحة للتعافي.

تعداد الأخطاء

عرّف enum مخصصًا يتوافق مع Error. وتضيف القيم المرتبطة سياقًا مفيدًا.

enum FileError: Error {
    case notFound(path: String)
    case unreadable(path: String)
    case corrupted
}
print("Defined FileError enum")

أساسيات إطلاق الأخطاء

ميّز الدوال التي قد تفشل باستخدام throws. وأطلق حالات محددة عندما لا تتحقق الشروط المسبقة.

func loadText(from path: String) throws -> String {
    if path.isEmpty { throw FileError.notFound(path: "(empty)") }
    if !path.hasSuffix(".txt") { throw FileError.unreadable(path: path) }
    return "Contents of " + path
}
print("Ready to throw on bad input")

التقاط حالات محددة

استخدم do/try/catch. ضع حالات catch المحددة أولًا، ثم catch عامًا لبقية الحالات.

do {
    let text = try loadText(from: "notes.txt")
    print(text)
} catch FileError.notFound(let p) {
    print("Missing file at:", p)
} catch FileError.unreadable(let p) {
    print("Cannot read:", p)
} catch {
    print("Other error:", error)
}

catch let وswitch

استخدم catch let error as YourError ثم switch لتنسيق رسائل سهلة الفهم للمستخدم.

do {
    _ = try loadText(from: "")
} catch let error as FileError {
    switch error {
    case .notFound(let p): print("not found:", p)
    case .unreadable(let p): print("unreadable:", p)
    case .corrupted: print("file corrupted")
    }
} catch {
    print("unexpected:", error.localizedDescription)
}

التعافي مقابل إعادة الإطلاق

قرر ما إذا كنت ستقوم بـالتعافي (بإرجاع قيمة بديلة) أو ستستخدم rethrow لإعادة الخطأ إلى المستدعي. اجعل القواعد بسيطة ومتوقعة.

func mustLoad(_ path: String) throws -> String {
    do {
        return try loadText(from: path)
    } catch FileError.notFound {
        // simple recovery: default content
        return "New file template"
    } catch {
        // escalate unknown issues
        throw error
    }
}
print(try? mustLoad("report.txt") ?? "(nil)")

نمط الأخطاء المخصصة

تحقق سريع: ما الطريقة الاصطلاحية لتعريف أخطاء مخصصة؟

مراجعة

مراجعة: عرّف أخطاء ذات أنواع محددة باستخدام تعداد يتوافق مع Error، وأطلق حالات دقيقة باستخدام throw، وعالجها عبر do/catch مع وضع الفروع المحددة أولًا والعامة أخيرًا.

الأسئلة الشائعة

هل درس «do/catch وتعريف الأخطاء (Enums)» مجاني؟

نعم — نص درس «do/catch وتعريف الأخطاء (Enums)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 3 دروس في المجموع.

ماذا ستتعلم في «do/catch وتعريف الأخطاء (Enums)»؟

عرّف Enums للأخطاء، وارمِها من الدوال، وعالج حالات الفشل باستخدام أنماط do/catch، بما في ذلك الحالات المحددة وcatch let وcatch العام. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.

كم من الوقت يستغرق درس «do/catch وتعريف الأخطاء (Enums)»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. السلسلة الاختيارية وأساسيات معالجة الأخطاء
  2. do/catch وتعريف الأخطاء (Enums)
  3. أنواع Result — ‏Result
← العودة إلى Swift Academy