أخبار الموقع

الإعلام الآلي — البرمجة بلغة بايثون: معالجة الأخطاء والاستثناءات (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.

📍 دروس مشابهة

شاهد أيضا

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

قانون أوم U=R×I حيث U التوتر (فولت)، R المقاومة (أوم)، I التيار (أمبير). المقاومة ثابتة …

التربية المدنية – النظافة في الأماكن العامة – السنة الثانية إبتدائي – المنهاج الجزائري

النظافة في الأماكن العامة نحافظ على نظافة الشارع والحديقة والمدرسة. نرمي النفايات في السلة. نشارك …

التربية المدنية – التضامن الاجتماعي – السنة الثانية إبتدائي – المنهاج الجزائري

التضامن الاجتماعي التضامن أن نقف مع بعضنا. نساعد الفقراء والمحتاجين. نزور المرضى. نشارك في الأعمال …

التربية المدنية – المحافظة على المسجد – السنة الثانية إبتدائي – المنهاج الجزائري

المحافظة على المسجد المسجد بيت الله. نحافظ على نظافته. لا نحدث ضجة فيه. نحترم المصلين. …

اترك تعليقاً

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

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

📚 أحدث الدروس

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

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

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

🔢
س5 ابتدائي

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

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

⚛️
3 ثانوي

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

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

🌍
3 ثانوي

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

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

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

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