fbpx

تعلم لغة البايثون – الدرس السابع عشر الاستثناءات في بايثون python Exception Handling

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

حل بايثون للأخطاء هو استثناء. ربما رأيت استثناء من قبل.

مثال

print(a)

#خطأ
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
</module></stdin>

Oops! Forgot to assign a value to the ‘a’ variable.

عفوا! نسيت تعيين قيمة للمتغير ‘a’.

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

إليك مثال تافه: لنفترض أنك تتكرر على قائمة. تحتاج إلى تكرار أكثر من 20 رقمًا ، ولكن القائمة مصنوعة من إدخال المستخدم ، وقد لا تحتوي على 20 رقمًا. بعد أن تصل إلى نهاية القائمة ، تريد فقط تفسير باقي الأرقام على أنها 0. وإليك كيف يمكنك القيام بذلك:

def do_stuff_with_number(n):
    print(n)

def catch_this():
    the_list = (1, 2, 3, 4, 5)

    for i in range(20):
        try:
            do_stuff_with_number(the_list[i])
        except IndexError: # Raised when accessing a non-existing index of a list
            do_stuff_with_number(0)

catch_this()

سنحصل على النتيجة التالية عند التشغيل

1
2
3
4
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

هناك ، لم يكن ذلك صعباً للغاية! يمكنك القيام بذلك مع أي استثناء. لمزيد من التفاصيل حول معالجة الاستثناءات ، لا تبحث أكثر من مستندات Python

تمرين

التعامل مع كل الاستثناء! فكر في الدروس السابقة لإرجاع الاسم الأخير للممثل.

# اقامة
actor = {"name": "أحمد", "rank": "awesome"}

# وظيفة للتعديل !!!
def get_last_name(): 
    return actor["last_name"]

# كود الاختبار
get_last_name()
print("All exceptions caught! Good job!")
print("The actor's last name is %s" % get_last_name())

الحل

actor = {"name": "أحمد شريف", "rank": "awesome"}

def get_last_name():
    return actor["name"].split()[1]

get_last_name()
print("All exceptions caught! Good job!")
print("The actor's last name is %s" % get_last_name())

سنحصل على النتيجة التالية عند التشغيل

<script.py> output:
    All exceptions caught! Good job!
    The actor's last name is شريف







Leave a Reply