معالجة الأخطاء في بايثون

Amine
15/09/2024

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

كتل try وexcept

لمعالجة الأخطاء، يمكنك استخدام كتل try و except. يوضع الكود الذي قد يسبب خطأ داخل كتلة try. إذا حدث خطأ، ينتقل البرنامج إلى كتلة except حيث يمكنك معالجة الخطأ.

إليك مثال بسيط:

try:
    number = int(input("Enter a number: "))
    print(f"You entered: {number}")
except ValueError:
    print("Oops! That was not a valid number.")

في هذا المثال:

  • تحاول كتلة try تحويل إدخال المستخدم إلى عدد صحيح.
  • إذا أدخل المستخدم شيئًا ليس رقمًا، يثير بايثون ValueError.
  • تلتقط كتلة except هذا الخطأ وتنفذ الكود بداخلها، مما يطبع رسالة خطأ بدلاً من انهيار البرنامج.

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

يمكنك الحصول على كتل except متعددة لمعالجة أنواع مختلفة من الأخطاء. إليك مثال يعالج كل من ValueError و ZeroDivisionError:

try:
    number = int(input("Enter a number: "))
    result = 10 / number
    print(f"Result: {result}")
except ValueError:
    print("Oops! That was not a valid number.")
except ZeroDivisionError:
    print("You can't divide by zero!")

في هذا المثال:

  • إذا أدخل المستخدم شيئًا ليس رقمًا، يتم التقاط ValueError.
  • إذا أدخل المستخدم 0، يتم التقاط ZeroDivisionError.

استخدام finally

أحيانًا يكون لديك كود يجب تشغيله مهما كان، سواء حدث خطأ أم لا. يمكنك استخدام كتلة finally لهذا الغرض. الكود داخل finally سيتم تشغيله دائمًا بعد كتل try و except، حتى إذا حدث خطأ.

try:
    file = open("example.txt", "r")
    content = file.read()
    print(content)
except FileNotFoundError:
    print("The file was not found.")
finally:
    file.close()

في هذا المثال، تضمن كتلة finally أن الملف سيتم إغلاقه، سواء حدث خطأ أثناء قراءة الملف أم لا.

تمارين

التمرين 1

اكتب برنامجًا يطلب من المستخدم إدخال رقمين، ثم يقسم الرقم الأول على الثاني، ويعالج أخطاء القسمة على الصفر.

try:
    num1 = float(input("Enter the first number: "))
    num2 = float(input("Enter the second number: "))
    result = num1 / num2
    print(f"Result: {result}")
except ZeroDivisionError:
    print("Error: You can't divide by zero.")

التمرين 2

عدل البرنامج السابق ليتعامل أيضًا مع الحالة التي يدخل فيها المستخدم شيئًا ليس رقمًا.

try:
    num1 = float(input("Enter the first number: "))
    num2 = float(input("Enter the second number: "))
    result = num1 / num2
    print(f"Result: {result}")
except ZeroDivisionError:
    print("Error: You can't divide by zero.")
except ValueError:
    print("Error: Invalid input. Please enter a number.")

التمرين 3

اكتب برنامجًا يحاول قراءة ملف قد لا يكون موجودًا ويتعامل مع الخطأ إذا لم يتم العثور على الملف.

try:
    file = open("non_existent_file.txt", "r")
    content = file.read()
    print(content)
except FileNotFoundError:
    print("Error: The file does not exist.")

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

التعليقات

اترك تعليقاً