0Pricing
Python Academy · درس

فهم الاستثناءات

تعلّم ماهية الاستثناءات وكيف ترفعها Python

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

مقدمة

الاستثناءات هي آلية Python للإبلاغ عن الأخطاء أثناء التشغيل ومعالجتها.

ما الاستثناء؟

الاستثناء حدث يعطل التدفق الطبيعي للبرنامج. ترفع Python الاستثناءات عند حدوث أخطاء، مثل القسمة على صفر.
# 1 / 0  # raises ZeroDivisionError
print('exceptions demo')

تسلسل الاستثناءات الهرمي

ترث جميع الاستثناءات من BaseException. وترث معظم الاستثناءات التي يراها المستخدم من Exception. ومن الأنواع المحددة: ValueError وTypeError وKeyError وغيرها.
print(issubclass(ValueError, Exception))
print(issubclass(Exception, BaseException))

الاستثناءات المضمنة الشائعة

يعني TypeError استخدام نوع غير صحيح. ويعني ValueError استخدام النوع الصحيح مع قيمة غير صحيحة. ويعني KeyError عدم وجود مفتاح القاموس. ويعني IndexError أن فهرس القائمة خارج النطاق. ويعني AttributeError عدم وجود هذه السمة.
# Examples:
# int('abc')       -> ValueError
# d['missing']     -> KeyError
# [1,2][9]         -> IndexError
print('common exceptions')

التتبّع

عندما لا تتم معالجة استثناء، تطبع Python تتبّعًا للاستدعاءات: مكدس الاستدعاءات من الأسفل، أي الأحدث، إلى الأعلى. تعلّم كيفية قراءته.
def f(): return 1/0
# f()  # shows traceback
print('traceback demo')

كائن الاستثناء

يحمل كل استثناء رسالة. تعطيك str(e) أو e.args وصف الاستثناء. ويمكن الوصول إليه داخل except كما يلي: except ValueError as e.
try:
    int('abc')
except ValueError as e:
    print(type(e).__name__, e)

التقاط أنواع متعددة

يلتقط except (TypeError, ValueError): أيًّا من النوعين في عبارة واحدة.
def parse(x):
    try:
        return int(x)
    except (TypeError, ValueError):
        return None
print(parse('abc'), parse(None))

مجموعة الاستثناءات (3.11+)

تضيف Python 3.11 النوع ExceptionGroup لمعالجة استثناءات متعددة تحدث في الوقت نفسه، وذلك باستخدام الصياغة except* .
# Python 3.11+:
# try: ...
# except* ValueError as eg:
#     print(eg.exceptions)
print('exception group demo')

التحذيرات مقابل الاستثناءات

يصدر import warnings; warnings.warn('msg') تحذيرًا من دون رفع استثناء. استخدمه للتنبيه إلى الميزات المهجورة والأخطاء القابلة للتجاوز.
import warnings
warnings.warn('This is deprecated', DeprecationWarning)
print('warning issued')

sys.exc_info()

تعيد sys.exc_info() داخل كتلة except القيمة (type, value, traceback)، وهي مفيدة لتسجيل تفاصيل الاستثناء كاملةً.
import sys
try:
    1/0
except:
    exc_type, exc_val, _ = sys.exc_info()
    print(exc_type, exc_val)

تسلسل الاستثناءات

يربط raise NewError('msg') from original_exc الاستثناءات في سلسلة. وتربط السمة __cause__ بينها.
try:
    int('abc')
except ValueError as e:
    raise RuntimeError('parse failed') from e

تحقق سريع

ما الاستثناء الذي يُرفع عند الوصول إلى قاموس باستخدام مفتاح غير موجود؟

مراجعة

ترث الاستثناءات من BaseException. اقرأ التتبّعات من الأسفل إلى الأعلى. والتقط الاستثناء باستخدام except as e. ومن الأنواع الشائعة: ValueError وTypeError وKeyError وIndexError وAttributeError.

تابع التقدم

أحسنت! انتقل إلى الدرس التالي لمواصلة تقدمك.

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

هل درس «فهم الاستثناءات» مجاني؟

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

ماذا ستتعلم في «فهم الاستثناءات»؟

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

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

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

كم من الوقت يستغرق درس «فهم الاستثناءات»؟

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

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

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

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

  1. فهم الاستثناءات
  2. try / except / else / finally
  3. رفع الاستثناءات وإعادة رفعها
  4. فئات الاستثناءات المخصصة
← العودة إلى Python Academy