الدرس العاشر: التعامل مع الأخطاء (Error Handling) في Python

الدرس العاشر: التعامل مع الأخطاء (Error Handling) في Python
الدرس العاشر: التعامل مع الأخطاء (Error Handling) في Python

 

الدرس العاشر: التعامل مع الأخطاء (Error Handling) في Python 🛠️

مقدمة:

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


أولاً: ما هي الأخطاء (Errors)؟

الأخطاء هي مشكلات تظهر أثناء تشغيل البرنامج، وبتمنع إكماله. تنقسم الأخطاء إلى:

  1. Syntax Errors: خطأ في بناء الكود.
    • مثال:

      print("Hello World" # نسيان القوس الأخير
  2. Exceptions (Runtime Errors): خطأ يحدث أثناء التشغيل.
    • مثال:

      result = 10 / 0 # قسمة على الصفر

ثانيًا: التعامل مع الأخطاء باستخدام try و except

1. الشكل الأساسي:


try:
# الكود الذي قد يحتوي على خطأ
except:
# التعامل مع الخطأ

2. مثال بسيط:


try:
number = int(input("Enter a number: "))
print(f"The number is {number}")
except:
print("Invalid input! Please enter a valid number.")

ثالثًا: أنواع الأخطاء في Python

1. معالجة أخطاء محددة

بنحدد نوع الخطأ عشان نتعامل معاه بطريقة مناسبة.


try:
result = 10 / 0
except ZeroDivisionError:
print("You can't divide by zero!")

2. معالجة عدة أخطاء


try:
num = int("abc")
result = 10 / num
except ValueError:
print("Invalid number format!")
except ZeroDivisionError:
print("Division by zero is not allowed!")

3. استخدام else

الكود داخل else بيشتغل لو مفيش أخطاء.


try:
num = int(input("Enter a number: "))
except ValueError:
print("Invalid input!")
else:
print(f"You entered: {num}")

4. استخدام finally

الكود داخل finally بيتنفذ دائمًا، سواء حصل خطأ أو لا.


try:
file = open("example.txt", "r")
content = file.read()
except FileNotFoundError:
print("File not found!")
finally:
print("Execution completed.")

رابعًا: إنشاء أخطاء مخصصة باستخدام raise

1. رفع خطأ يدوي


age = int(input("Enter your age: "))
if age < 0:
raise ValueError("Age cannot be negative!")

2. مثال عملي:

برنامج للتحقق من صحة كلمة مرور.


def validate_password(password):
if len(password) < 6:
raise ValueError("Password too short!")
if not any(char.isdigit() for char in password):
raise ValueError("Password must contain at least one number!")
try:
validate_password("abc")
except ValueError as e:
print(e)

خامسًا: أمثلة عملية للتعامل مع الأخطاء

1. قسمة الأرقام بأمان


def safe_division(a, b):
try:
return a / b
except ZeroDivisionError:
return "Cannot divide by zero!"
print(safe_division(10, 2)) # 5.0
print(safe_division(10, 0)) # Cannot divide by zero!

2. قراءة ملف بأمان


def read_file(filename):
try:
with open(filename, "r") as file:
return file.read()
except FileNotFoundError:
return "The file does not exist!"
print(read_file("example.txt"))

3. برنامج للتحقق من البيانات المدخلة


def get_positive_number():
while True:
try:
number = int(input("Enter a positive number: "))
if number <= 0:
raise ValueError("The number must be positive!")
return number
except ValueError as e:
print(e)
print(f"You entered: {get_positive_number()}")

سادسًا: نصائح لتحسين التعامل مع الأخطاء 🧠

  1. كن دقيقًا في تحديد نوع الخطأ.
    • مثال: تجنب كتابة except: العامة، وحدد الخطأ.
  2. استخدم رسائل خطأ واضحة.
    • خلي المستخدم يعرف المشكلة بالضبط.
  3. قم بتسجيل الأخطاء (Error Logging).
    • استخدم مكتبة مثل logging لحفظ الأخطاء لتتبعها لاحقًا.

خاتمة:

تعاملنا في هذا الدرس مع الأخطاء في Python باستخدام الكتل try و except، وتعلمنا كيفية كتابة كود مستقر وآمن. في الدرس القادم، هنكتشف مكتبات Python المدمجة (Standard Libraries) وأهم استخداماتها.

تعليقات