Mojo Academy · درس

التعليمة التوضيحية raises

حدّد الدوال التي قد تفشل

الدرس 3 من 413 خطوة

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

الصراحة بشأن الفشل

تريد Mojo من الدوال أن توضّح بصراحة ما إذا كان بإمكانها الفشل. وتُحدّد الكلمة المفتاحية raises الدالة التي قد تُصدر خطأً. 📣

إضافة raises

ضع raises مباشرة بعد قائمة الوسائط. فهي تخبر المستدعين بأن هذه الدالة قد لا تنجح دائمًا.

fn parse(text: String) raises -> Int:
    ...

يمكن لـ def أن يُصدر استثناءً دائمًا

قد تُصدر دالة def المرنة استثناءً من دون أي تعليمة توضيحية. وتتعامل Mojo مع def على أنه قابل للفشل افتراضيًا.

def load(name: String):
    raise Error("missing")

يجب على fn التصريح بذلك

لا يمكن لدالة fn الصارمة إصدار استثناء ما لم تُضف raises. وهذا يجعل الفشل صريحًا وسهل الملاحظة.

fn safe(x: Int) -> Int:
    return x + 1

استدعاء دالة تُصدر استثناءً

يعني استدعاء شيء يحمل العلامة raises أنه يجب عليك التعامل مع الخطأ، وعادةً ما يكون ذلك داخل كتلة try.

try:
    var n = parse("42")
except e:
    print(e)

تنتقل الأخطاء عبر raises

إذا استُدعيت دالة تُصدر استثناءً داخل دالة أخرى تحمل raises، ينتقل الخطأ ببساطة إلى الأعلى من دون try.

عدم إصدار الاستثناء يعني الأمان

تَعِد الدالة التي لا تحتوي على raises بأنها لن تُصدر استثناءً. ويمكن للمستدعين استخدامها بحرية من دون كتل try.

يتحقق المترجم من شيفرتك

يرفض المترجم في Mojo إصدار استثناء داخل fn لا تُصدر استثناءات. وهذا يكشف حالات عدم التوافق قبل تشغيل البرنامج.

شيفرة توثّق نفسها

تعمل الكلمة المفتاحية raises كتوثيق حي. وتكفي نظرة واحدة إلى التوقيع لمعرفة ما إذا كان الاستدعاء قد يفشل.

أبقِ الواجهة محدودة

ضع raises على الدوال التي يمكنها الفشل فعلًا فقط. فكلما قل عدد الدوال التي تُصدر استثناءات، أصبحت مواضع استدعائها أبسط وأكثر أمانًا.

raises وأنواع الإرجاع

يمكنك الجمع بين raises ونوع إرجاع عادي. فالدالة تُرجع قيمة عند النجاح أو تُصدر استثناءً عند الفشل.

fn divide(a: Int, b: Int) raises -> Int:
    if b == 0:
        raise Error("divide by zero")
    return a // b

تحقق سريع

فكّر في كيفية عمل fn والكلمة المفتاحية raises معًا.

مراجعة

تعلّمت أن raises تصرّح بأن الدالة قد تفشل، وأن def يمكنه إصدار استثناء دائمًا بينما يجب على fn التصريح بذلك، وأن المترجم يفرض هذه القاعدة. 🎯

البدء مجانًا

تعلم Mojo مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
30
الدروس
120

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

هل درس «التعليمة التوضيحية raises» مجاني؟

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

ماذا ستتعلم في «التعليمة التوضيحية raises»؟

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

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

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

كم من الوقت يستغرق درس «التعليمة التوضيحية raises»؟

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

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

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

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

  1. رفع خطأ
  2. التقاط الأخطاء باستخدام try/except
  3. التعليمة التوضيحية raises
  4. التنظيف باستخدام finally
← العودة إلى Mojo Academy