أخبار الموقع

الإعلام الآلي — البرمجة بلغة بايثون: معالجة الأخطاء والاستثناءات (try-except) — الأولى ثانوي (شعب علمية) — بكالوريا — المنهاج الجزائري

البرمجة بلغة بايثون: معالجة الأخطاء والاستثناءات (try-except)

عند كتابة برامج بلغة بايثون، قد تحدث أخطاء غير متوقعة أثناء التنفيذ تؤدي إلى توقف البرنامج بشكل مفاجئ. تُسمى هذه الأخطاء الاستثناءات (Exceptions). في هذا الدرس، سنتعلم كيفية التعامل معها باستخدام هيكل try-except لضمان استمرارية عمل البرنامج.

1. مفهوم الاستثناءات في بايثون

الاستثناء هو حدث يحدث أثناء تنفيذ البرنامج ويعطل سير العمل الطبيعي. عندما يحدث خطأ، تقوم بايثون بإنشاء كائن استثناء. إذا لم يتم معالجة هذا الاستثناء، سيتوقف البرنامج عن العمل وتظهر رسالة خطأ.

أمثلة على الاستثناءات الشائعة:

  • ZeroDivisionError: يحدث عند القسمة على صفر
  • ValueError: يحدث عند استخدام قيمة غير مناسبة
  • TypeError: يحدث عند إجراء عملية على نوع غير مناسب
  • FileNotFoundError: يحدث عند محاولة فتح ملف غير موجود
  • IndexError: يحدث عند محاولة الوصول إلى فهرس غير موجود في قائمة
  • KeyError: يحدث عند محاولة الوصول إلى مفتاح غير موجود في قاموس

2. هيكل try-except الأساسي

للمعالجة الصحيحة للاستثناءات، نستخدم الكلمتين المفتاحيتين try و except:

try:
    # الكود الذي قد يسبب خطأ
    الرقم = int(input("أدخل رقماً: "))
    النتيجة = 10 / الرقم
    print("النتيجة:", النتيجة)
except ZeroDivisionError:
    print("خطأ: لا يمكن القسمة على صفر!")
except ValueError:
    print("خطأ: يجب إدخال رقم صحيح!")

3. أنواع مختلفة من معالجة الاستثناءات

أ. معالجة استثناءات متعددة: يمكنك التعامل مع أنواع مختلفة من الأخطاء بشكل منفصل:

try:
    القائمة = [1, 2, 3]
    print(القائمة[5])
except IndexError:
    print("خطأ: الفهرس خارج حدود القائمة!")

ب. استخدام except عام: يمكن التقاط أي نوع من الاستثناءات:

try:
    س = int(input("أدخل رقماً: "))
    print(10 / س)
except Exception as e:
    print("حدث خطأ:", e)

4. استخدام else و finally

else: يُنفذ الكود الموجود في else إذا لم يحدث أي استثناء.

finally: يُنفذ دائماً بغض النظر عن حدوث استثناء أم لا. يستخدم عادة لإغلاق الملفات أو تحرير الموارد.

try:
    الملف = open("data.txt", "r", encoding="utf-8")
    المحتوى = الملف.read()
except FileNotFoundError:
    print("الملف غير موجود!")
else:
    print("تم قراءة الملف بنجاح")
    print(المحتوى)
finally:
    # سيتم تنفيذه دائماً
    print("انتهت محاولة فتح الملف")
    if 'الملف' in locals():
        الملف.close()

5. رفع الاستثناءات (raise)

يمكنك رفع استثناء بنفسك باستخدام الكلمة المفتاحية raise:

def تحقق_العمر(العمر):
    if العمر < 18:
        raise ValueError("يجب أن يكون العمر 18 سنة أو أكثر")
    return "مرحباً بك"

try:
    print(تحقق_العمر(15))
except ValueError as خطأ:
    print("خطأ:", خطأ)

6. مثال تطبيقي شامل

برنامج لقراءة الأعداد من ملف وحساب مجموعها مع معالجة جميع الأخطاء المحتملة:

def حساب_المجموع(اسم_الملف):
    المجموع = 0
    try:
        with open(اسم_الملف, "r", encoding="utf-8") as f:
            for سطر in f:
                try:
                    المجموع += float(سطر.strip())
                except ValueError:
                    print(f"تخطي القيمة غير الصالحة: {سطر.strip()}")
    except FileNotFoundError:
        print(f"الملف {اسم_الملف} غير موجود!")
        return None
    except Exception as خطأ:
        print(f"حدث خطأ غير متوقع: {خطأ}")
        return None
    else:
        print(f"تمت العملية بنجاح. المجموع = {المجموع}")
        return المجموع
    finally:
        print("انتهت محاولة معالجة الملف")

# اختبار الدالة
النتيجة = حساب_المجموع("الأعداد.txt")
if النتيجة:
    print(f"النتيجة النهائية: {النتيجة}")

تمارين

تمرين 1: اكتب برنامجاً يطلب من المستخدم إدخال رقمين ويقوم بقسمة الأول على الثاني، مع معالجة خطأ القسمة على صفر وخطأ إدخال قيمة غير رقمية.

تمرين 2: اكتب دالة قراءة_الأعداد() تقرأ قائمة من الأعداد الصحيحة من ملف وتعيد مجموعها، مع معالجة جميع الاستثناءات المحتملة (عدم وجود ملف، قيم غير صالحة).

تمرين 3: أنشئ برنامج تسجيل دخول بسيط يرفع استثناء ValueError إذا كانت كلمة المرور أقل من 8 أحرف.

تمرين 4: اكتب برنامجاً يطلب من المستخدم إدخال 5 أعداد في قائمة ويعالج خطأ IndexError و ValueError.

📍 دروس مشابهة

شاهد أيضا

العلوم الفيزيائية — الطاقة المتجددة: طاقة الرياح والطاقة المائية — السنة الأولى متوسط — المنهاج الجزائري

الطاقة المتجددة طاقة الرياح: عنفات تحول حركة الرياح إلى كهرباء. الطاقة المائية: السدود تولد الكهرباء …

العلوم الفيزيائية — الطاقة المتجددة: الطاقة الشمسية — السنة الأولى متوسط — المنهاج الجزائري

الطاقة المتجددة الطاقة الشمسية: تحويل ضوء الشمس إلى كهرباء (خلايا فوتوفولطية) أو حرارة (سخانات شمسية). …

العلوم الفيزيائية — الكثافة: الكتلة الحجمية — السنة الأولى متوسط — المنهاج الجزائري

الكثافة الكثافة ρ=m/V. الوحدة kg/m³ أو g/cm³. كثافة الماء 1g/cm³. المواد الأقل كثافة من الماء …

العلوم الفيزيائية — مبدأ أرخميدس: الطفو والغوص — السنة الرابعة متوسط — المنهاج الجزائري

مبدأ أرخميدس قوة دفع أرخميدس = وزن السائل المزاح. الجسم يطفو إذا كان وزنه أقل …

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

تم الإعلان عن نتائج البكالوريا 2026

📚 أحدث الدروس

عرض الكل ←
📖
س3 ابتدائي

التربية الإسلامية — بر الوالدين

فضل بر الوالدين وأهميته في الإسلام

🔢
س5 ابتدائي

الرياضيات — مساحة القرص

حساب مساحة الدائرة — ط × نق²

⚛️
3 ثانوي

الفيزياء — ثنائي القطب RL

تمارين بكالوريا مع الحلول

🌍
3 ثانوي

التاريخ — الحرب العالمية الأولى

الأسباب والنتائج — بكالوريا

📝 بنك الفروض والاختبارات

عرض الكل ←
فروض الفصل الأول جميع المواد — الأولى متوسط
اختبارات الفصل الثاني مع الحلول — الثالثة متوسط
مواضيع بكالوريا مقترحة مع الحلول — 3 ثانوي
مسابقات الأساتذة نماذج وحلول — 2026