البرنامج بدون حماية مثل زجاج: أي غلطة صغيرة تكسره كله. جرب بس: افتح ملف غير موجود، أو اقسم رقم على صفر — يطير برنامجك برسالة حمراء ويتوقف كل شي.
الحل: نلبس البرنامج خوذة. اسمها try / except، ومعناها بالعربي: "جرب هذا، وإذا صارت مشكلة سو هذا بداله بدل ما تنهار".
try:
n = int(input("اكتب رقم: "))
print("عشرة مقسومة عليه:", 10 / n)
except ValueError:
print("هذا مو رقم! اكتب أرقام بس")
except ZeroDivisionError:
print("ما نقدر نقسم على صفر!")وش صار هنا؟ بايثون يجرب السطور اللي داخل try. إذا كل شي تمام، نمشي عادي وexcept ما ينفذ أبداً. وإذا صار خطأ، بايثون يشوف نوعه:
• كتب "خمسة"؟ ValueError — نرد عليه بلطف
• كتب 0؟ ZeroDivisionError — نشرح له إن القسمة على صفر مستحيلة
• والبرنامج يكمل حي — ما يطير ولا يوقف!
الأخطاء الشائعة اللي لازم تحفظها كأسماء:
ValueError # قيمة غلط: int("أهلاً")
ZeroDivisionError # قسمة على صفر
FileNotFoundError # ملف غير موجود
TypeError # نوع غلط: "5" + 5وأهم قاعدة أمان بالبرمجة: لا تكتب except وحدها وتسكتها. يعني:
try:
risky_thing()
except:
pass # خطر! يخفي كل مشكلة تحت السجادةهذا يمسك كل الأخطاء ويسكتها — البرنامج يكمل وهو مكسور من جوه! مثل ما تغطي صوت إنذار الحريق وتقول كل شي تمام. الصح: امسك نوع الخطأ بالاسم ورد برسالة مفيدة أو أصلح المشكلة فعلاً.
جرب بنفسك: سوّ برنامج يسأل عن رقم ويرسم نجوم بالعدد اللي كتبه — وإذا غلط المستخدم، ما يطير البرنامج، بس يرد بلطف.