معالجة الأخطاء في بايثون
بغض النظر عن مدى حرصك عند كتابة الكود، فإن الأخطاء ستحدث. ربما يدخل المستخدم شيئًا غير متوقع، أو أن الملف الذي تحاول فتحه غير موجود. في بايثون، يمكنك استخدام معالجة الأخطاء للتعامل مع هذه المواقف بشكل لائق، دون انهيار البرنامج.
كتل 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.")
عمل رائع! لقد تعلمت الآن كيفية معالجة الأخطاء في بايثون، مما يجعل برامجك أكثر قوة وودية للمستخدم. هذه مهارة مهمة ستساعدك على كتابة برامج يمكنها التعامل مع المواقف غير المتوقعة بأناقة.
اترك تعليقاً