finally يُنفَّذ سواء حدث استثناء أم لا

آخر تحديث: 2026-09-22

finally يُنفَّذ سواء حدث استثناء أم لا

كتلة finally تُنفَّذ سواء حدث استثناء أم لا؛ تُستخدم غالبًا لتحرير الموارد.

التصنيفالكلمات المفتاحية والعبارات
النوعكلمة مفتاحية / عبارة
إصدار بايثونall

📝 الصياغة

try:
    block
finally:
    cleanup

▶ مثال

عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:

المخرجات:

try
cleanup
المزيد من الحالات قادم قريباً — تابعونا.

❓ أسئلة شائعة

Qهل يُنفَّذ الكود في `finally` دائمًا؟
Aدائمًا تقريبًا. حتى إذا كان `try` يحتوي `return` أو يُثير استثناءً، يُنفَّذ `finally` قبل الخروج. الاستثناءات الوحيدة هي حالات متطرفة مثل قتل العملية قسرًا أو انقطاع الطاقة أو تعطل المفسّر.
Qماذا يحدث إذا كتبت `return` داخل `finally`؟
Aيتجاوز `return` في `finally` القيمة التي يُرجعها جسم `try` — مأزق كلاسيكي. لا تكتب `return` ولا تُثر استثناءً في `finally`؛ يجب أن يقوم بالتنظيف فقط.
Qكل من `finally` و`with` يمكنه تنظيف الموارد. كيف تختار بينهما؟
Aلإدارة موارد مثل الملفات والأقفال والاتصالات، فضّل `with` (أنظف وموصى به رسميًا). استخدم `finally` لأي منطق تنظيف يجب أن يعمل كبديل، مثل `finally: conn.close()`.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%