0Pricing
Swift Academy · درس

أنواع الأخطاء المخصّصة باستخدام LocalizedError

صمّموا تعدادًا غنيًا للأخطاء متوافقًا مع Error وLocalizedError.

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

مرحبًا

تحمل أنواع الأخطاء المصممة جيدًا سياقًا كافيًا لتشخيص المشكلات وعرض رسائل مفهومة للمستخدم. ويوفّر `LocalizedError` نقاط التخصيص اللازمة لذلك.

تعداد الخطأ الأساسي

```swift enum AuthError: Error { case invalidCredentials case accountLocked(until: Date) case networkUnavailable } ```

بروتوكول LocalizedError

```swift extension AuthError: LocalizedError { var errorDescription: String? { switch self { case .invalidCredentials: return "Username or password is incorrect." case .accountLocked(let date): return "Account locked until \(date.formatted())." case .networkUnavailable: return "No internet connection." } } } print(AuthError.invalidCredentials.localizedDescription) ```

failureReason وrecoverySuggestion

```swift extension AuthError: LocalizedError { var failureReason: String? { "Authentication service rejected the request." } var recoverySuggestion: String? { "Reset your password or contact support." } } ```

سياق الخطأ المتداخل

```swift enum APIError: Error { case server(statusCode: Int, body: String) case decode(underlying: DecodingError) case timeout } ``` احتفظوا بالخطأ الأساسي حتى يمكن تسجيله أو عرضه في إصدارات التصحيح.

رمي الأخطاء المخصصة

```swift func login(user: String, pass: String) throws -> Token { guard !user.isEmpty && !pass.isEmpty else { throw AuthError.invalidCredentials } // ... } ```

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

```swift do { let token = try login(user: u, pass: p) } catch AuthError.invalidCredentials { showAlert("Bad credentials") } catch AuthError.accountLocked(let date) { showAlert("Locked until \(date)") } catch { showAlert(error.localizedDescription) } ```

CustomDebugStringConvertible

```swift extension AuthError: CustomDebugStringConvertible { var debugDescription: String { "AuthError.\(self)" } } ```

نمط تغليف الأخطاء

```swift enum AppError: Error { case auth(AuthError) case api(APIError) case unknown(Error) } func process() throws { do { try login() } catch let e as AuthError { throw AppError.auth(e) } catch { throw AppError.unknown(error) } } ```

أخطاء Equatable للاختبار

```swift enum FetchError: Error, Equatable { case notFound case serverError(code: Int) } XCTAssertEqual(error, FetchError.notFound) ```

تحقق سريع

أيّ بروتوكول يوفّر `errorDescription` لرسائل الأخطاء الموجّهة إلى المستخدم؟

مراجعة

النقاط الأساسية: • اجعلوا الأخطاء تتوافق مع `LocalizedError` لعرض رسائل موجّهة إلى المستخدم • استخدموا القيم المرتبطة لحمل السياق، مثل رموز الحالة والتواريخ • غلّفوا الأخطاء منخفضة المستوى داخل تعدادات خاصة بالمجال • تبسّط أخطاء `Equatable` اختبار الوحدات • يساعد `CustomDebugStringConvertible` في تصحيح الأخطاء التالي: الربط بين Result وasync/await.

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

هل درس «أنواع الأخطاء المخصّصة باستخدام LocalizedError» مجاني؟

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

ماذا ستتعلم في «أنواع الأخطاء المخصّصة باستخدام LocalizedError»؟

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

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

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

كم من الوقت يستغرق درس «أنواع الأخطاء المخصّصة باستخدام LocalizedError»؟

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

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

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

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

  1. أساسيات Result
  2. ‏map وflatMap على Result
  3. أنواع الأخطاء المخصّصة باستخدام LocalizedError
  4. الربط بين Result وasync/await
← العودة إلى Swift Academy