Python معالجة الاستثناءات: حاول، باستثناء، أخيرًا، ارفع

⚡ ملخص ذكي

Python تتيح معالجة الاستثناءات لبرنامجك الاستجابة لأخطاء وقت التشغيل بدلاً من التعطل. ستتعلم هنا كيفية عمل try و except و finally و raise، ولماذا تُعدّ الاستثناءات مهمة، وأنواع الأخطاء المضمنة الشائعة التي ستواجهها.

  • ⚠️ ما هو : الاستثناء هو خطأ وقت التشغيل Python يرتفع عند حدوث خطأ ما.
  • 🛡️ حاول / باستثناء: تقوم كتلة try بتشغيل التعليمات البرمجية المحفوفة بالمخاطر؛ بينما تقوم كتلة except بالتقاط الاستثناء ومعالجته.
  • 🧹 أخيرا: يتم تنفيذ كتلة finally دائمًا، سواء حدث استثناء أم لا.
  • 🚀 يرفع: تتيح لك عبارة raise إمكانية إحداث استثناء عن قصد.
  • 📋 أنواع الأخطاء: تشمل الاستثناءات الشائعة ValueError و KeyError و IndexError و ZeroDivisionError.
  • 🤖 مساعدة الذكاء الاصطناعي: تقوم أدوات الذكاء الاصطناعي مثل Copilot بإنشاء كتل try-except واقتراح أنواع الأخطاء.

Python معالجة الاستثناء

ما هو التعامل مع الاستثناءات في Python?

الاستثناء هو الخطأ الذي يحدث أثناء تنفيذ البرنامج. ومع ذلك، أثناء تشغيل البرنامج، Python يُنشئ استثناءً يجب معالجته لتجنب تعطل برنامجك. في Python اللغة، يتم تشغيل الاستثناءات تلقائيًا عند حدوث أخطاء، أو يمكن تشغيلها واعتراضها بواسطة التعليمات البرمجية الخاصة بك.

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

أمثلة شائعة للاستثناء

  • القسمة على صفر
  • الوصول إلى ملف غير موجود.
  • إضافة نوعين غير متوافقين
  • محاولة الوصول إلى فهرس غير موجود للتسلسل
  • إزالة الجدول من خادم قاعدة البيانات المنفصلة.
  • سحب مبلغ أكبر من المبلغ المتاح من أجهزة الصراف الآلي

لماذا يجب عليك استخدام الاستثناءات؟

فيما يلي أسباب استخدام الاستثناءات في Python:

  • تتيح لك معالجة الاستثناءات فصل كود معالجة الأخطاء عن الكود العادي.
  • استثناء هو ملف Python موضوع الذي يمثل خطأ.
  • كما هو الحال مع تعليقات التعليمات البرمجية، تساعدك الاستثناءات على تذكير نفسك بما يتوقعه البرنامج.
  • يوضح الكود ويعزز إمكانية القراءة.
  • يسمح لك بتحفيز العواقب حيث أن معالجة الأخطاء تتم في مكان واحد وبطريقة واحدة.
  • الاستثناء هو أسلوب مناسب للتعامل مع رسائل الخطأ.
  • In Pythonيمكنك رفع استثناء في البرنامج باستخدام طريقة رفع الاستثناء.
  • يساعدك رفع الاستثناء على كسر تنفيذ التعليمات البرمجية الحالي وإرجاع الاستثناء إلى التوقعات حتى تتم معالجته.
  • معالجة الاستثناءات للمكونات التي لا يمكنها التعامل معها مباشرة.

قواعد الاستثناءات

فيما يلي بعض القواعد الأساسية Python معالجة الاستثناء:

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

Python آلية معالجة الاستثناءات

يتم إدارة معالجة الاستثناءات من خلال الكلمات الرئيسية الخمس التالية:

  1. محاولة
  2. قبض
  3. أخيرا
  4. رمي

Python حاول البيان

تتضمن عبارة "محاولة" الكلمة الأساسية "محاولة"، متبوعة بنقطتين (:) ومجموعة من التعليمات البرمجية التي قد تحدث فيها استثناءات. وله جملة واحدة أو أكثر.

أثناء تنفيذ عبارة المحاولة، إذا لم تحدث أي استثناءات، فسيتجاهل المترجم معالجات الاستثناءات الخاصة ببيان المحاولة المحدد.

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

Syntax:
try:
statement(s)

بيان المصيد

تأخذ كتل الالتقاط وسيطة واحدة في كل مرة، وهو نوع الاستثناء الذي من المحتمل أن تلتقطه. قد تتراوح هذه الوسائط من نوع معين من الاستثناءات التي يمكن أن تختلف إلى فئة الاستثناءات الشاملة.

قواعد كتلة الصيد:

  • يمكنك تحديد كتلة الالتقاط باستخدام الكلمة الأساسية الجذابة
  • يتم وضع معلمة Catch Exception دائمًا بين قوسين
  • إنه يمثل دائمًا نوع الاستثناء الذي يمسك بمقابض الكتلة.
  • تتم كتابة كود معالجة الاستثناء بين قوسين متعرجين {}.
  • يمكنك وضع كتلة التقاط متعددة داخل كتلة محاولة واحدة.
  • لا يمكنك استخدام كتلة الالتقاط إلا بعد كتلة المحاولة.
  • يجب ترتيب كل كتلة الالتقاط من فئة فرعية إلى فئة فائقة.

على سبيل المثال:

try
}
catch (ArrayIndexOutOfBoundsException e) {
System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {
System.err.printin("Caught second " + e.getMessage());
}

بيان أخيرا في Python

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

وأخيرا، البند اختياري. الغرض منه هو تحديد إجراءات التنظيف التي ينبغي تنفيذها في جميع الظروف.

try:
    raise KeyboardInterrupt
finally:
    print 'welcome, world!'
Output
Welcome, world!
KeyboardInterrupt

أخيرًا، يتم تنفيذ الجملة قبل عبارة المحاولة.

رفع البيان في Python

تحدد عبارة الرفع وسيطة تقوم بتهيئة كائن الاستثناء. هنا، تتبع الفاصلة اسم الاستثناء، والوسيطة أو مجموعة الوسيطة التي تتبع الفاصلة.

بناء الجملة:

raise [Exception [, args [, traceback]]]

في بناء الجملة هذا، تكون الوسيطة اختيارية، وفي وقت التنفيذ، تكون قيمة وسيطة الاستثناء دائمًا لا شيء.
على سبيل المثال:
A Python يمكن أن يكون الاستثناء أي قيمة مثل سلسلة أو فئة أو رقم أو كائن. معظم هذه الاستثناءات التي يثيرها Python الأساسية هي فئات ذات وسيطة وهي مثيل للفئة.

مهم Python أخطاء

نوع الخطأ الوصف
خطأ حسابي يعمل ArithmeticError كفئة أساسية لجميع الاستثناءات الحسابية. يتم رفعه للأخطاء في العمليات الحسابية.
استيراد خطأ يُثار خطأ الاستيراد عند محاولة استيراد وحدة غير موجودة. يحدث هذا النوع من الاستثناءات إذا قمتَ بـping خطأ في اسم الوحدة أو الوحدة غير الموجودة في المسار القياسي.
خطأ الفهرس يظهر خطأ IndexErrori عند محاولة إحالة تسلسل خارج النطاق.
خطأ رئيسي عندما لا يتم العثور على مفتاح معين في القاموس، يظهر استثناء KeyError.
الاسم خطأ يظهر خطأ NameError عندما تتم الإشارة إلى اسم في التعليمات البرمجية وهو غير موجود أبدًا في مساحة الاسم المحلية أو العامة.
خطأ القيمة يتم رفع خطأ القيمة عندما تتلقى دالة أو عملية مضمنة وسيطة قد تكون من النوع الصحيح ولكنها لا تحتوي على قيمة مناسبة.
خطأ ينشأ هذا النوع من الأخطاء عندما تصل إحدى الوظائف المضمنة (input() أو Raw_input()) إلى شرط EOF دون قراءة أي بيانات.
خطأ في قسم الصفر ينشأ هذا النوع من الأخطاء عند حدوث القسمة أو الوحدة على صفر لجميع الأنواع الرقمية.
خطأ في الإدخال- يحدث هذا النوع من الخطأ عند فشل عملية الإدخال/الإخراج.
خطأ في بناء الجملة يتم ظهور أخطاء SyntaxErrors عندما يكون هناك خطأ في Python بناء الجملة.
خطأ المسافة البادئة يظهر هذا الخطأ عندما لا يتم تعريف المسافة البادئة بشكل صحيح

أخرى مهمة Python الاستثناءات

استثناء الوصف
استثناء حسابي خطأ حسابي، مثل القسمة على صفر.
ArraylndexOutOfBoundsException فهرس الصفيف خارج الحدود.
ArrayStoreException يساعدك الواجب على عنصر الصفيف من نوع غير متوافق.
ClassCastException إرسال غير صالح
MlegalMonitorStateException عملية مراقبة غير قانونية، مثل الانتظار على موضوع غير مقفل.
MlegalStateException البيئة أو التطبيق في حالة خاطئة.
درجة بدون استثنائات لم يتم العثور على الفئة.
CloneNotSupportedException محاولة استنساخ كائن لا يطبق الواجهة القابلة للاستنساخ.
استثناء الوصول غير القانوني تم رفض الوصول إلى الفصل الدراسي.
استثناء يحدث هذا عند محاولة إنشاء كائن من واجهة أو مطلقtracالفئة t.
CloneNotSupportedException محاولة استنساخ كائن لا يطبق الواجهة.

الخطأ مقابل الاستثناءات

خطأ الاستثناءات
جميع الأخطاء في Python هي النوع الذي لم يتم التحقق منه. تتضمن الاستثناءات كلا من النوع المحدد وغير المحدد.
تحدث أخطاء في وقت التشغيل وهي غير معروفة للمترجم. يمكن استرداد الاستثناءات من خلال التعامل معها بمساعدة كتل محاولة الالتقاط.
تحدث الأخطاء في الغالب بسبب البيئة التي يعمل فيها التطبيق. التطبيق نفسه يسبب استثناءات.
أمثلة:
خطأ عدم وجود ذاكرة كافية
أمثلة:
الاستثناءات المحددة، استثناء SQL، NullPointerException، إلخ.

الأسئلة الشائعة

معالجة الاستثناءات هي عملية الاستجابة لأخطاء وقت التشغيل حتى لا يتعطل برنامجك. Python يستخدم كتل try و except لالتقاط الاستثناءات وتشغيل رمز الاسترداد بدلاً من ذلك.

Code يُوضع الكود الذي قد يفشل داخل كتلة try. في حال حدوث استثناء، Python ينتقل إلى كتلة الاستثناء المطابقة، والتي تعالج الخطأ وتسمح للبرنامج بالاستمرار.

يتم تنفيذ كتلة finally سواء تم طرح استثناء أم لا، لذا فهي مثالية لمهام التنظيف مثل إغلاق الملفات أو تحرير الموارد التي يجب أن تحدث دائمًا.

تُطلق عبارة raise استثناءً عن قصد. يمكنك إطلاق استثناء مُضمّن مثل ValueError، أو استثناء مُخصّص، للإشارة إلى حدوث حالة خطأ.

الأخطاء، مثل خطأ بناء الجملة، لا يمكن عادةً استعادتها وإيقاف البرنامج. أما الاستثناءات فهي أحداث وقت التشغيل التي يمكنك التقاطها ومعالجتها باستخدام كتل try و except.

مساعدو الذكاء الاصطناعي مثل GitHub Copilot يكملون تلقائيًا كتل try-except، ويقترحون نوع الاستثناء الصحيح الذي يجب التقاطه، ويقومون بإنشاء رمز تنظيف نهائي من وصف قصير لمنطقك.

نعم. يمكن للأدوات المدعومة بالذكاء الاصطناعي أتمتة عملية التغليفping تجنب استخدام التعليمات البرمجية الخطرة في كتل try-except، ونوصي باستخدام استثناءات محددة بدلاً من الاستثناءات المجردة، ونضيف تسجيلًا لتسهيل تصحيح الأخطاء.

تشمل الاستثناءات المضمنة الشائعة ValueError وTypeError وKeyError وIndexError وImportError وNameError وZeroDivisionError. يشير كل منها إلى نوع محدد من مشاكل وقت التشغيل في التعليمات البرمجية الخاصة بك.

تلخيص هذه التدوينة بـ: