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

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

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

مُساهمة من طرف Admin في الخميس فبراير 18, 2016 10:57 am

معالجة الاستثناء :
حتى الآن، والحصول على خطأ ، أو استثناء ، في برنامج البايثون يعني أن البرنامج بأكمله سوف يتحطم . أنت لا تريد لهذا أن يحدث في برامج في العالم الحقيقي . بدلا من ذلك ، أنت تريد يكشف البرنامج عن الأخطاء ، والتعامل معها، ومن ثم الاستمرار في تشغيل .
على سبيل المثال ، في البرنامج التالي الذي يحتوي على الخطأ “divide-byzero” . افتح نافذة جديدة فى محرر الملفات وإدخل الكود التالي، واحفظه باسم zeroDivide.py:



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



الخطأ ZeroDivisionError يحدث كلما حاولت قسمة عدد على صفر. من رقم السطر الذى يرد في رسالة الخطأ ، تعرف أن العبارة return فى الدالة spam() هو المسبب للخطأ .
يمكن التعامل مع الأخطاء بعبارات try و except . يتم وضع الكود الذى يحتمل أن يكون خطأ في بيان عبارة try . يتحرك تنفيذ البرنامج إلى بداية بيان عبارة try التالية إذا حدث خطأ .
يمكنك وضع كود divide-by-zero السابق في بيان عبارة try ، ويكون لديها بيان except للتعامل مع ما يحدث عندما يحدث هذا الخطأ.



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




لاحظ أن أية أخطاء تحدث فى دعوات الدالة فى كتلة try سوف تظهر أيضا . اعتبر البرنامج التالى ، والذى لديه دعوات للدالة spam() فى كتلة try .



عند تشغيل هذا البرنامج فإن الخرج سوف يكون بالشكل التالى :




السبب فى أن print(spam(1)) لن يتم تنفيذها على الإطلاق هو أنه بمجرد يقفز التنفيذ إلى كود عبارة except ، فإنه لا يعود إلى بيان try . بدلا من ذلك ، فهو فقط يستمر فى التحرك لأسفل فى طريقه المعتاد .
******************

برنامج قصير : تخمين العدد :

Admin
Admin

عدد المساهمات : 985
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى