كما يقول المثل، هناك ظروف غير متوقعة عندما نكتب البرامج، لا يمكن أن تكون الأمور سلسة دائمًا. غالبًا ما تحدث بعض المواقف غير الطبيعية، على سبيل المثال، عندما نخرج لمشاهدة فيلم، نخرج أولاً، ثم نمشي ذهبنا للتسوق بعد مشاهدة فيلم وعدنا إلى المنزل، ولكن بعد مشاهدة الفيلم، وجدنا أن السماء كانت تمطر في الخارج، وفي هذا الوقت، اضطررنا إلى إلغاء خطة التسوق والعودة إلى المنزل المطر هنا هو حالة غير طبيعية، لذلك صممنا البرنامج وحان الوقت لإضافة حل معالجة الاستثناء هذا.
دعونا نلقي نظرة أولاً على مشكلة الاستثناء ، الكود كما يلي:
number=int(input('الرجاء إدخال رقم:'))if15/number>=3:print('ok')else:print('خاطئ')
نتيجة الإخراج:
الرجاء إدخال رقم: 3ok الرجاء إدخال رقم: 15wrong الرجاء إدخال رقم: 0Traceback(mostrecentcallllast):FileC:/Users/test.py,line2,in<module>if15/number>=3:ZeroDivisionError:divisionbyzero
عندما يكون المقام الذي أدخلناه هو 0، سنجد أن البرنامج أبلغ عن خطأ، مما يعني أن هناك مشكلة في البرنامج الذي كتبناه. لأننا لم نفكر في ما يجب فعله عندما يكون المقام 0، حدث استثناء في البرنامج لذلك قمنا بكتابة برنامج عليك أن تأخذ بعين الاعتبار بعض المواقف غير الطبيعية التي قد تحدث، فلنتعرف على عدة مواقف غير طبيعية شائعة.
هذا استثناء يحدث عند الوصول إلى مفتاح القاموس وقيمة المفتاح غير موجودة.
الرمز هو كما يلي:
my_dict={'dotcpp':123}print(my_dict['dot'])
الاستثناء هو كما يلي:
Traceback(mostrecentcallllast):FileC:/Users/test.py,line2,in<module>print(my_dict['dot'])KeyError:'dot'
هذا النوع من الاستثناءات أكثر شيوعًا عندما نتعلم لغة Python عندما نصل إلى عناصر التسلسل ، سيتم تشغيل آلية الاستثناء هذه عندما تتجاوز قيمة الفهرس النطاق.
my_list=[1,2,3,4,5]طباعة(my_list[100])
الاستثناء هو كما يلي:
Traceback(mostrecentcallllast):FileC:/Users/test.py,line2,in<module>print(my_list[100])IndexError:listindexoutofrange
لا يوجد سوى 5 عناصر في قائمتنا، وسيتم طرح هذا الاستثناء إذا تجاوز الوصول الحد الأقصى.
يتم طرح هذا الاستثناء عندما نستخدم متغيرًا غير محدد ، ويكون الكود كما يلي:
name=['www.dotcpp,com']print('اسم المتغير الموجود:',name)print('dotcpp المتغير غير الموجود:',dotcpp)
الاستثناء هو كما يلي:
اسم المتغير الموجود:['www.dotcpp,com']Traceback(mostrecentcallllast):FileC:/Users/Qingyan/PycharmProjects/untitled1/teach/test.py,line3,in<module>print('متغير غير موجود dotcpp: '،dotcpp) خطأ في الاسم: الاسم 'dotcpp' غير محدد
يحدث هذا الاستثناء عندما تكون البيانات التي تم تمريرها غير متوافقة مع النوع المحدد. على سبيل المثال، عندما نريد جمع وطرح عددين صحيحين، ويستخدم أحدهما نوع سلسلة، سيحدث هذا الخطأ.
الرمز هو كما يلي:
أ=10ب='dotcpp'print(أ+ب)
الاستثناء هو كما يلي:
تتبع (أحدث المكالمات):FileC:/Users/test.py,line3,in<module>print(a+b)TypeError:unoperedoperandtype(s)for+:'int'and'str'
ما ورد أعلاه هو بعض الاستثناءات الأكثر شيوعًا التي قد نواجهها مثل ValueError وOSError وAttributeError وغيرها من الاستثناءات في عملية التعلم. عندما نواجه استثناءً لا نتعرف عليه، يمكننا الاستعلام عن المحتوى ذي الصلة من خلال مستند المساعدة.