معالجة الاستثناءات في بايثون: معالجة الاستثناء باستخدام المحاولة باستثناء
نشرت: 2021-06-29أثناء مواجهة خطأ ، يتم إنهاء برنامج Python. الأخطاء بشكل عام هي المشاكل التي تحدث في برنامج يتوقف عن تنفيذه. قد تكون الأخطاء ناتجة عن خطأ في بناء الجملة أو قد تكون استثناءً. عندما يتم اكتشاف عبارة غير صحيحة بواسطة المحلل اللغوي ، يوجد خطأ في بناء الجملة.
ومع ذلك ، عندما تولد الشفرة ذات البنية الصحيحة خطأً ، فإنها تُعرف باسم الاستثناء. تتوفر استثناءات مضمنة مختلفة في لغة بيثون. يتم رفعها مع حدوث الأحداث الداخلية حيث يتم تغيير التدفق الطبيعي للبرنامج.
لذلك يمكن تعريف الاستثناءات على أنها ظروف برنامج غير عادية معينة تؤدي إلى مقاطعة الكود وبالتالي يتم إحباط تدفق البرنامج.
يتوقف تنفيذ البرنامج بمجرد أن يواجه استثناء. يؤدي هذا إلى إيقاف تنفيذ التعليمات البرمجية. ومن ثم ، فإن الاستثناءات هي أخطاء كنتيجة لوقت التشغيل لا يمكن معالجتها بواسطة برنامج Python النصي.
للتعامل مع الاستثناءات في Python ، توفر لغة البرمجة Python حلاً بحيث يستمر تنفيذ الكود ولا توجد أي مقاطعة. توقف معالجة الاستثناءات عن تنفيذ التعليمات البرمجية الموجودة بعد الرمز الذي يطرح استثناءً.
تتوفر العديد من الخيارات المضمنة في Python والتي تسمح بتنفيذ برنامج دون أي مقاطعة بما في ذلك الاستثناءات الشائعة. إلى جانب ذلك ، هناك شرط استثناءات بيثون المخصصة . بالنسبة لأي برنامج Python ، فإن الاستثناءات الشائعة التي يمكن طرحها هي:
- خطأ صفري: ينتج هذا النوع من الاستثناءات عند استخدام الصفر لقسمة رقم.
- NameError: عندما يفشل برنامج في العثور على اسم سواء كان عموميًا أو محليًا ، يحدث هذا النوع من الاستثناءات.
- خطأ مسافة بادئة: المسافة البادئة غير الصحيحة تؤدي إلى خطأ مسافة بادئة.
- IOError : فشل عملية الإدخال-الإخراج ينتج عنه خطأ IO.
- EOFError: يحدث في التشغيل المستمر للبرنامج حتى عندما يكون ملف
تم الوصول إلى نهاية الملف.
جدول المحتويات
رفع الاستثناء
لرمي استثناء في ظل ظروف معينة يتم استخدام الزيادة.
يتم إيقاف تنفيذ البرنامج ويتم عرض الاستثناء المرتبط به على الشاشة. يتيح عرض الاستثناءات للمستخدمين معرفة المشكلة الأساسية.
في لغة بايثون من خلال استخدام الجملة المرتفعة ، يمكننا طرح استثناء. يكون التطبيق مفيدًا في الحالات التي يحتاج فيها البرنامج إلى التوقف عن طريق رفع استثناء.
على سبيل المثال: من المفترض أن البرنامج يحتاج إلى حوالي 1 جيجا بايت من الذاكرة لتنفيذه ويحاول احتلال 1 جيجا بايت ، في هذه الحالة ، لإيقاف تنفيذ البرنامج ، يمكن طرح استثناء.
بناء الجملة لإثارة استثناء:
Exception_class، <value>
لذلك،
- يتم استخدام "زيادة" لإثارة استثناء في أحد البرامج.
- يمكن توفير قيمة لاستثناء يمكن توفيره للأقواس.
- يمكن الوصول إلى القيمة باستخدام الكلمة الأساسية "as". يمكن تخزين القيمة المعطاة للاستثناء في المتغير المرجعي المشار إليه بـ "e".
- لتحديد نوع الاستثناء ، يمكن تمرير القيمة إلى استثناء.
AssertionError
يمكن إجراء تأكيد في Python بدلاً من ترك البرنامج يتعطل. يتم التأكيد على استيفاء البرنامج لشرط معين. سيستمر البرنامج في العمل إذا كانت الحالة صحيحة. عدا ذلك ، يتم طرح استثناء AssertionError بواسطة البرنامج عندما يتبين أن الشرط خاطئ.
معالجة الاستثناءات من خلال كتلة المحاولة والاستثناء
يتم الإمساك بالاستثناءات التي تم إلقاؤها في الثعبان ثم معالجتها من خلال المحاولة باستثناء الكتل في الثعبان. يتم تنفيذ الكود داخل كتلة try بشكل طبيعي كجزء من البرنامج. تتضمن الكتلة الأخرى العبارات التي يتم تنفيذها استجابة للاستثناءات التي طرحها البرنامج في كتلة try.
يطرح البرنامج استثناءً عندما يواجه خطأً في رمز صحيح نحويًا. إذا لم يتم التعامل مع الاستثناءات التي تم طرحها بشكل صحيح ، فسيحدث عطل في البرامج. في مثل هذه السيناريوهات ، تحدد كتلة الاستثناء استجابة البرنامج لهذا الاستثناء.
سيتم فهم تطبيق شرط المحاولة والاستثناء بشكل أفضل من خلال المثال التالي المأخوذ من المصدر المذكور.
في هذه الحالة ، كلما حدث استثناء ، سيستمر البرنامج في العمل وسيبلغ المستخدم أن البرنامج لم يكن ناجحًا بدلاً من إعطاء مخرجات فارغة.
الخروج : أفكار ومواضيع مشروع بايثون
أظهر البرنامج نوع الخطأ الذي تم طرحه من خلال استدعاء الوظيفة. ومع ذلك ، يمكن اكتشاف الخطأ الناتج عن الوظيفة للحصول على فكرة عما حدث بالفعل.
سيؤدي تشغيل الكود في جهاز windows إلى إنشاء ما يلي
تشير الرسالة المعروضة أولاً إلى خطأ AssertionError يتم من خلاله إبلاغ المستخدم بأنه لا يمكن تنفيذ الوظيفة إلا على نظام تشغيل Linux. تعطي الرسالة الثانية مزيدًا من المعلومات المتعلقة بالوظيفة التي تعذر تنفيذها.
غير موجود إذا كان file.log سينشئ مخرجات بالرسالة "تعذر فتح file.log".
سيستمر البرنامج في العمل لأنه رسالة تنقل المعلومات إلى المستخدم. يتوفر الكثير من الاستثناءات المضمنة في مستندات Python. استثناء واحد كما هو موضح أدناه.
سيؤدي عدم وجود file.log في هذه الحالة إلى إنشاء الإخراج التالي.
يمكن اكتشاف استثناءات مختلفة من خلال استخدام المزيد من استدعاءات الوظائف في جملة try. ومع ذلك ، عند اكتشاف استثناء ، ستتوقف عبارات جملة try.
شرط آخر
يمكن أن يساعد استخدام عبارة else من الجمل في توجيه البرنامج لتنفيذ مجموعة من العبارات فقط في حالة عدم وجود استثناءات.
تم تنفيذ بند else فقط لعدم وجود استثناءات. إذا كان الرمز يحتوي على استثناءات ، فسيؤدي ذلك إلى ما يلي.
استثناءات Python المخصصة
يوجد في Python عدد من الاستثناءات المضمنة التي تؤدي إلى حدوث خطأ عندما يكون هناك خطأ ما في البرنامج. ومع ذلك ، يحتاج المستخدم إلى إنشاء بعض الاستثناءات المخصصة في الحالات التي يتم فيها تقديم غرضه.
يمكن إنشاء فئة جديدة لتحديد الاستثناءات المخصصة. إما بشكل مباشر أو غير مباشر ، يجب اشتقاق هذه الفئات من فئة الاستثناءات المضمنة.
يتم إنشاء CustomError للفئة المعرفة من قبل المستخدم والتي يتم توارثها من فئة Exception. على غرار الاستثناءات الأخرى ، تظهر هذه الاستثناءات أيضًا من خلال استخدام "رفع" مع رسالة خطأ اختيارية.
يجب وضع الاستثناءات المعرفة من قبل المستخدم في ملف منفصل كلما كان هناك تطوير لبرنامج Python كبير. من الممارسات الجيدة بشكل عام القيام بذلك وتتبعها معظم الوحدات القياسية حيث يتم تعريف الاستثناءات بشكل منفصل على أنها أخطاء. py أو استثناءات. py.
الاستثناءات المخصصة للبيثون بسيطة وبما أن الفئات العادية تنفذ كل شيء فإنها تتبع نفس الشيء.
النحو والأمثلة
دعونا نفكر في متغيرين هما أ و ب. يتم أخذ مدخلات المتغيرات من المستخدم ويتم تقسيم الأرقام. الآن ، إذا كان المقام الذي أدخله المستخدم هو صفر.
للتعامل مع هذه الاستثناءات ، يمكن إضافة كتل try-except إلى البرنامج. لأي نوع من التعليمات البرمجية التي تؤدي إلى الشك في طرح الاستثناءات. يجب وضعها في كتلة محاولة العبارات.
بناء جملة كتلة try
يحاول:
#الشفرة
باستثناء استثناء 1:
#الشفرة
باستثناء استثناء 2:
#الشفرة
#الشفرة
يُظهر استخدام عبارات try-except حيث يتم وضع الكود في كتلة try ويتم تنفيذه عندما لا توجد استثناءات في الكود.
تركيب جملة else مع try-except
يحاول
# محاولة البيانات
باستثناء استثناء 1
#الشفرة
آخر
# تنفيذ الكود في حالة عدم وجود استثناء
بعض النقاط المهمة:
- لا يجب تحديد الاستثناء من خلال بيان استثناء في بيثون.
- يمكن الإعلان عن استثناءات متعددة في رمز من خلال استخدام كتلة try حيث يمكن أن يكون هناك العديد من العبارات داخل كتلة try التي يمكنها طرح استثناءات من أنواع مختلفة.
- يمكن تحديد كتلة أخرى باستخدام كتلة try التي يتم تنفيذها عند عدم وجود استثناءات يتم طرحها بواسطة كتلة try.
- يجب أن تحتوي كتلة else على عبارات ليست مسؤولة عن طرح الاستثناءات.
اقرأ أيضًا: أهم الأسباب التي تجعل Python شائعة لدى المطورين
خاتمة
في هذه المقالة ، ناقشنا بإيجاز مفهوم معالجة الاستثناءات في بيثون مع بعض الأمثلة. إلى جانب الاستثناءات المضمنة ، يتم أيضًا تحديد استثناءات python المخصصة بشكل موجز. الآن ، يمكنك معرفة أهمية الاستثناءات والتعامل مع الاستثناءات في Python .
إذا كنت مهتمًا بمعرفة المزيد عن لغة البايثون وتنفيذها في علم البيانات ، فيمكنك الاطلاع على الدورة التالية من upGrad "Executive PG Program in Data Science".
تم تصميم الدورة التدريبية عبر الإنترنت لجميع المهنيين المبتدئين الذين يقعون ضمن الفئة العمرية من 21 إلى 45 عامًا. مع أكثر من 20 جلسة مباشرة ومعرفة عملية بأكثر من 14 أداة ولغات برمجة ، ستوجهك الدورة نحو الكمال. يمكن إرسال أي استفسارات. سيساعدك فريقنا.
كم عدد أنواع الأخطاء الموجودة في بايثون؟
هناك فئتان يمكن تمييزهما من الأخطاء في Python- أخطاء التركيب والاستثناءات. أخطاء في بناء الجملة: تحدث أخطاء في بناء الجملة عندما يحتوي أي سطر من التعليمات البرمجية على بنية خاطئة. هذا هو الخطأ الأكثر شيوعًا ويتم اكتشافه أثناء تحليل البرنامج. تتضمن الأخطاء عدم وجود عامل تشغيل ، ومسافة بادئة غير صحيحة ، وخطأ إملائي للكلمة الرئيسية ، ونقطتين مفقودتين ، وترك الأقواس ، وأخطاء دقيقة أخرى في بناء الجملة. الاستثناءات: الاستثناءات هي الأخطاء التي يتم اكتشافها أثناء تنفيذ البرنامج. بعد أن ينجح البرنامج في اختبار بناء الجملة ، يمر بفحص الأخطاء المنطقية. تحتوي Python على مجموعة غنية من الاستثناءات المضمنة. يمكنك أيضًا إنشاء استثناءات مخصصة معرّفة من قبل المستخدم.
ما هو الفرق الرئيسي بين الخطأ النحوي والاستثناء؟
يحدث خطأ في بناء الجملة عندما تكون الشفرة أو سطر من التعليمات البرمجية خاطئًا من الناحية التركيبية. عند حدوث خطأ في بناء الجملة في رمز ، يتم إنهاء البرنامج. يمكن أن يحدث خطأ في بناء الجملة عن طريق فقدان النقطتين أو حتى كتابة كلمة رئيسية بشكل خاطئ.
ومع ذلك ، فإن الاستثناءات مختلفة تمامًا. يمكن اعتبار الاستثناء شذوذًا يعطل تدفق البرنامج. حتى إذا كان البرنامج صحيحًا نحويًا ، فقد يحدث الاستثناء. على عكس الخطأ ، يتم تنفيذ الكود حتى السطر الذي يحدث فيه الاستثناء.
ما هو دور زيادة الكلمة المفتاحية في بايثون؟
يتم استخدام الكلمة الأساسية زيادة لرفع استثناء في بايثون. يمكن أيضًا رفع نوع الخطأ ، ويمكنك أيضًا إضافة نص ليتم عرضه في وقت رفع الاستثناء. يكون مفيدًا جدًا عندما تحتاج إلى التحقق من كودك بحثًا عن المدخلات.