except فرع معالجة الاستثناءات
آخر تحديث: 2026-09-22
except فرع معالجة الاستثناءات
except يتبع try مباشرة، ويعالج نوع الاستثناء المطابق (يمكن تحديد مجموعة)؛ as يمكنه ربط كائن الاستثناء.
| التصنيف | الكلمات المفتاحية والعبارات |
|---|---|
| النوع | كلمة مفتاحية / عبارة |
| إصدار بايثون | all |
📝 الصياغة
try:
block
except ExceptionType [as name]:
handler
▶ مثال
عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:
المخرجات:
div by zero
🏷️ كلمات مفتاحية / عبارات ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريباً — تابعونا.
❓ أسئلة شائعة
Qهل يمكن لـ `except` واحد التقاط عدة أنواع استثناءات؟
Aنعم — اكتبها كصف: `except (ValueError, TypeError) as e`. لاحظ أن استثناءات الفئات الفرعية يجب أن تأتي قبل فئتها الأم، وإلا يلتقطها فرع الفئة الأم أولاً.
Qالتقطت استثناءً لكن البرنامج ما زال ينهار. لماذا؟
Aغالبًا لأن نوع الاستثناء لم يتطابق؛ مثلًا الكود أثار `TypeError` فعلًا لكنك كتبت `except ValueError`. كما أن `except Exception` لا يلتقط `KeyboardInterrupt` و`SystemExit`، إذ ينحدران من `BaseException`.
Qما هو `e` في `except ... as e`؟
A`e` هو كائن الاستثناء؛ و`str(e)` يعطيك رسالة الخطأ. في بايثون 3، يُحذف المرجع المسمى `e` تلقائيًا عند نهاية كتلة `except`، فلا يبقى محتفظًا به لوقت طويل ويسبب مشكلات.