بايثون هي لغة برمجة شعبية معروفة ببساطتها وأناقتها. ومع ذلك ، مثل أي لغة أخرى ، بيثون لديها الفروق الدقيقة والمشاكل الخاصة بها.
واحدة من هذه المشاكل هي أن الاستبعاد واسع للغاية. في بيثون ، يمكنك التعامل مع الأخطاء باستخدام المحاولة وباستثناء الكتل. ومع ذلك ، إذا استخدمنا استثناء واسعا جدا ، على سبيل المثال ، استثناء ، فقد لا نلتقط استثناء محددا وبدلا من ذلك نحصل على خطأ عام.
على سبيل المثال ، بدلا من التعامل مع استثناء فالويرور فقط ، يمكننا التقاط جميع الاستثناءات باستخدام استثناء. قد يكون هذا مناسبا ، ولكن من خلال القيام بذلك نفقد معلومات حول خطأ معين وقد يصبح من الصعب تعقب المشكلة وحلها.
لماذا استثناء واسع جدا أن يكون مشكلة? أولا ، يمكن أن يجعل تصحيح التعليمات البرمجية أكثر صعوبة. إذا كنا لا نعرف أي استثناء حدث ، فلن نتمكن من تصحيح الخطأ بشكل صحيح. ثانيا ، يمكن أن يؤدي إلى سلوك غير متوقع للبرنامج. إذا اكتشفنا جميع الاستثناءات ، فيمكننا وضع افتراضات غير صحيحة حول كيفية عمل البرنامج ، ونتيجة لذلك نحصل على نتيجة غير صحيحة أو حتى تعطل البرنامج.
- تحديد استثناء في بايثون
- دور الاستثناءات في البرمجة
- اعتراض الاستثناء الضمني
- الاستبعاد واسع جدا وعواقبه السلبية
- الاستخدام السليم للاستثناءات في بايثون
- كيفية تجنب استثناء واسع جدا
تحديد استثناء في بايثون
في لغة برمجة بايثون ، الاستثناء هو كائن خاص يحدث نتيجة لخطأ أو حدث غير عادي أثناء تنفيذ البرنامج. تستخدم الاستثناءات للتعامل مع الأخطاء والتحكم في تدفق تنفيذ البرنامج وضمان أمان الكود.
عند حدوث استثناء ، يتوقف مترجم بايثون عن تنفيذ البرنامج ويبحث عن معالج الاستثناء المناسب. إذا تم العثور على المعالج ، يتم تنفيذ التعليمات البرمجية الخاصة به ، وإذا لم يكن كذلك ، ينتهي البرنامج برسالة خطأ.
. عند حدوث استثناء ، يتم إنشاء كائن من هذه الفئة وتمريره إلى معالج الاستثناء. يحتوي كائن الاستثناء على معلومات حول نوع الاستثناء ورسالة خطأ وبيانات إضافية أخرى.
. مثال على ذلك هو إنشاء استثناء عند التحقق من بعض الشروط:
إذا س > 100:وتوليد استثناء من النوع
يتم تنفيذه بدلا من مقاطعة تنفيذ البرنامج. في
إلا كتلةفي هذا المثال ، نستخدم ثلاثة معالجات استثناء مختلفة:
قيمةالخطأ
,
فيلنوتفونديرور
ومعالج مشترك لجميع الاستثناءات الأخرى. في حالة حدوث استثناء نوع
قيمةالخطأ
، الرمز في
سيتم تنفيذ كتلة خطأ القيمة باستثناء
. في حالة حدوث استثناء نوع
فيلنوتفونديرور
، الرمز في
سيتم تنفيذ كتلة فيلنوتفونديرور باستثناء
. في حالة حدوث أي استثناء آخر ، رمز في كتلة باستثناء
سيتم تنفيذها
.دور الاستثناءات في البرمجة
الاستثناءات هي أداة مهمة في البرمجة. إنها تسمح لك بمعالجة الأخطاء والمواقف غير القياسية التي قد تحدث أثناء تنفيذ البرنامج.
أحد الأدوار الرئيسية للاستثناءات هو منع البرنامج من "التعطل" عند حدوث خطأ. بدلا من مجرد إيقاف البرنامج عند حدوث خطأ ، تسمح لك الاستثناءات بإدارة هذا الخطأ وتنفيذ إجراءات معينة للتعامل معه.الاستثناءات أيضا تجعل برامج التصحيح أسهل. عندما يلقي البرنامج استثناء ، فإنه يحتوي على معلومات حول الموقع الذي حدث فيه الخطأ ومكدس الاستدعاءات الذي أدى إلى هذا الخطأ. تساعد هذه المعلومات المبرمج في العثور على المشكلة وحلها.
استخدام الاستثناءات يجعل الكود أكثر قابلية للقراءة ويسمح لك بفصل معالجة الأخطاء عن المنطق الرئيسي للبرنامج. هذا يحسن النمطية وإعادة استخدام التعليمات البرمجية ، حيث يمكن تنفيذ معالجة الأخطاء في وظائف أو فئات منفصلة.
الاستثناءات مفيدة أيضا عند العمل مع الموارد الخارجية مثل الملفات أو اتصالات الشبكة. إنها تسمح لك بإغلاق الموارد المفتوحة بشكل صحيح ، حتى في حالة وجود أخطاء.
يتم تمثيل الاستثناءات في بيثون من قبل مختلف الفئات المضمنة مثل استثناء ، تيبيرور ، و فالويرور. بالإضافة إلى ذلك ، يمكن للمطورين إنشاء فئات استثناء خاصة بهم لحالات محددة.
يتطلب استخدام الاستثناءات بعض الخبرة والمعرفة بقواعد معالجة الأخطاء. ومع ذلك ، فهو جزء مهم من تطوير برامج موثوقة ومستدامة.
اعتراض الاستثناء الضمني
تحتوي لغة برمجة بايثون على آلية استثناء تسمح لك بمعالجة الأخطاء والمواقف الاستثنائية التي تحدث. ومع ذلك ، لا يفكر المطورون دائما في الاستثناءات التي يعترضونها ، وفي بعض الأحيان يمكن اكتشاف اعتراض الاستثناء الضمني في الكود.
اعتراض الاستثناء الضمني هو موقف لا يحدد فيه المطور صراحة الاستثناءات المحددة التي يريد التعامل معها ، ولكنه يستخدم ببساطة مشغل المحاولة/باستثناء دون تحديد نوع الاستثناء. يمكن أن يؤدي ذلك إلى حقيقة أن الكود لا يتعامل مع الأخطاء التي يجب معالجتها ، ونتيجة لذلك ، قد لا يعمل البرنامج بشكل صحيح أو حتى يتعطل.
يمكن أن يكون الاعتراض الضمني خطيرا لأنه يخفي الأخطاء والمواقف الاستثنائية عن المطور. بدلا من الحصول على معلومات حول الخطأ الذي حدث ومحاولة إصلاحه ، قد يتلقى المطور رسالة خطأ لن تساعده في العثور على سبب المشكلة وإصلاحها.
مثال على اعتراض الاستثناء الضمني:
حاول:
# رمز حيث الاستثناءات ممكنة
... باستثناء
:
# معالجة الاستثناء
...
لتجنب اعتراض الاستثناء الضمني ، يوصى دائما بتحديد نوع الاستثناء الذي تريد اعتراضه. سيسمح لك ذلك بمعالجة الأخطاء والاستثناءات بشكل أكثر دقة ، بالإضافة إلى تبسيط تصحيح الأخطاء وإصلاح المشكلات في التعليمات البرمجية الخاصة بك.
مثال على اعتراض الاستثناء الصريح:
حاول:
# رمز حيث الاستثناءات ممكنة
...
باستثناء القيمةخطأ:
# التعامل مع استثناء خطأ القيمة
...
باستثناء خطأ الفهرس:
# التعامل مع استثناء خطأ الفهرس
...
الاستبعاد واسع جدا وعواقبه السلبية
فقدان السيطرة على تنفيذ البرنامج: إذا اعترض استثناء واسع للغاية جميع الأخطاء ، فإن المبرمج يفقد القدرة على التحكم في تنفيذ البرنامج عند حدوث أخطاء محددة. هذا يمكن أن يؤدي إلى صعوبات في فهم وتصحيح التعليمات البرمجية.
لتجنب هذه العواقب السلبية ، يوصى باستخدام استثناءات أكثر تحديدا تتوافق مع الأخطاء المحددة التي تتوقعها. على سبيل المثال ، بدلا من استثناء "استثناء" عام ، يمكنك استخدام استثناء أكثر تحديدا مثل "فالويرور" أو "فيلنوتفونديرور". سيسمح لك ذلك بالحصول على معلومات أكثر دقة حول الخطأ الذي حدث والتعامل معه بشكل صحيح.
التفاف دائما أقسام يحتمل أن تكون خطرة من التعليمات البرمجية في محاولة-باستثناء كتل. سيساعد هذا في اعتراض الاستثناءات المحتملة والتعامل معها ، وكذلك تجنب مقاطعة التطبيق بأكمله. لا تنس إضافة الكتلة النهائية لتنفيذ التعليمات البرمجية التي ستحتاج إلى تنفيذها على أي حال.
3. إظهار رسائل الخطأ الإعلامية