الدرس 9 من 10

التعامل مع الأخطاء

اليوزر هيكتب حاجات غلط، ده أكيد.

ليه البرنامج بيقع؟

اليوزر هيكتب حروف مكان أرقام، الملف ممكن يكون ممسوح، النت ممكن يقطع. الـ try / except معناها: «جرّب تعمل كذا، ولو حصلت مشكلة اتصرف كده بدل ما تقع».

errors.py
try:
    total = int(input("Total amount: "))
    people = int(input("Number of people: "))
    share = total / people
except ValueError:
    print("Please enter numbers only")
except ZeroDivisionError:
    print("Number of people can't be zero")
else:
    print(f"Each pays {share:.2f}")     # runs only if no error
finally:
    print("Thanks for using the app")   # runs ALWAYS
الخطأبيحصل إمتى
ValueErrorint("abc") القيمة مش مناسبة
ZeroDivisionErrorقسمة على صفر
TypeError"5" + 3 أنواع مش متوافقة
KeyErrorمفتاح مش موجود في dict
FileNotFoundErrorملف مش موجود

مثال واقعي: اسأل لحد ما يدخل رقم صح

safe_input.py
def ask_for_age():
    while True:
        try:
            age = int(input("Your age: "))
            if age < 0 or age > 120:
                print("Age must be between 0 and 120")
                continue
            return age
        except ValueError:
            print("That's not a number, try again")

user_age = ask_for_age()
print(f"Got it: {user_age}")

رسالة الخطأ (اسمها Traceback) صاحبتك مش عدوتك. اقراها من تحت لفوق: آخر سطر فيه نوع الخطأ، واللي فوقه فيه رقم السطر اللي فيه المشكلة.

⚠ متعملش except فاضيةexcept: من غير نوع خطأ بتمسك كل حاجة، حتى الأخطاء اللي المفروض تشوفها وتصلحها. حدد دايماً نوع الخطأ اللي متوقعه.
الدرس اللي فات