معالجة استثناءات بايثون: المحاولة والالتقاط والأخير والرفع [مثال]

ما هو التعامل مع الاستثناءات في بايثون؟

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

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

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

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

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

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

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

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

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

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

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

تتم إدارة معالجة الاستثناءات بواسطة المتابعةwing 5 كلمات رئيسية:

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

بيان تجربة بايثون

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

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

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

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());
}

البيان الأخير في بيثون

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

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

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

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

رفع البيان في بايثون

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

بناء الجملة:

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

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

أخطاء بايثون الهامة

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

استثناءات بايثون الهامة الأخرى

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

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

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

نبذة عامة

  • الاستثناء هو خطأ حدث أثناء تنفيذ البرنامج.
  • يشير الاستثناء إلى أنه على الرغم من إمكانية وقوع الحدث، إلا أن هذا النوع من الأحداث يحدث بشكل غير متكرر.
  • الأمثلة الشائعة للاستثناء هي 1) القسمة على الصفر، 2) الوصول إلى ملف غير موجود، 3) إضافة نوعين غير متوافقين.
  • الاستثناء هو كائن بايثون الذي يمثل خطأ.
  • تتضمن عبارة "محاولة" الكلمة الأساسية "محاولة"، متبوعة بنقطتين (:) ومجموعة من التعليمات البرمجية التي قد تحدث فيها استثناءات. وله جملة واحدة أو أكثر.
  • تأخذ كتل الالتقاط وسيطة واحدة في كل مرة، وهو نوع الاستثناء الذي من المحتمل أن تلتقطه.
  • تحدد عبارة الرفع وسيطة تقوم بتهيئة كائن الاستثناء.
  • وأخيرًا، يتم تنفيذ الحظر دائمًا بغض النظر عما إذا تم طرح الاستثناء أم لا.