الدرس 9 من 10
التعامل مع الأخطاء
اليوزر هيكتب حاجات غلط، ده أكيد.
ليه البرنامج بيقع؟
اليوزر هيكتب حروف مكان أرقام، الملف ممكن يكون ممسوح، النت ممكن يقطع. الـ try / except معناها: «جرّب تعمل كذا، ولو حصلت مشكلة اتصرف كده بدل ما تقع».
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
| الخطأ | بيحصل إمتى |
|---|---|
ValueError | int("abc") القيمة مش مناسبة |
ZeroDivisionError | قسمة على صفر |
TypeError | "5" + 3 أنواع مش متوافقة |
KeyError | مفتاح مش موجود في dict |
FileNotFoundError | ملف مش موجود |
مثال واقعي: اسأل لحد ما يدخل رقم صح
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: من غير نوع خطأ بتمسك كل حاجة، حتى الأخطاء اللي المفروض تشوفها وتصلحها. حدد دايماً نوع الخطأ اللي متوقعه.