التعامل مع الأخطاء في بايثون
في هذه المقالة، سنشرح التعامل مع الأخطاء في بايثون۔
YouTube Video
التعامل مع الأخطاء في بايثون
يتم التعامل مع الأخطاء في بايثون بشكل رئيسي باستخدام الكلمات المفتاحية try
وexcept
وelse
وfinally
۔ استخدام هذه التراكيب يمكنّك من الاستجابة بشكل مناسب عند حدوث خطأ في برنامجك۔ فيما يلي، سوف نشرح كيفية استخدام كل منها۔
كتلة try
داخل كتلة try
، تقوم بكتابة الكود الذي تريد تنفيذه۔ إذا حدث خطأ داخل هذه الكتلة، ينتقل تنفيذ البرنامج فورًا إلى كتلة except
۔
1try:
2 # Code that may raise an error (division by zero, for example)
3 #number = int(input("Enter a number: "))
4 number = int("abc")
5 result = 10 / number
6 print("Result:", result)
7except ValueError as e:
8 # Handle invalid input (e.g. non-numeric input)
9 print("Invalid input. Please enter a whole number.")
10 print(f"Value error: {e}")
11except ZeroDivisionError as e:
12 # Handle division by zero error
13 print("Cannot divide by zero!")
14 print(f"Zero division error: {e}")
- هذا الكود هو مثال على كشف الأخطاء في كتلة
try
والتعامل معها بشكل مناسب من خلال التقاط إماValueError
أوZeroDivisionError
۔
كتلة except
في كتلة except
، تقوم بكتابة الكود الذي سيتم تنفيذه عند حدوث استثناء (خطأ) معين۔ يمكنك أيضًا التقاط استثناءات محددة بناءً على نوع الاستثناء الذي يحدث۔
1try:
2 #number = int(input("Enter a number: "))
3 number = 0
4 result = 10 / number
5 print("Result:", result)
6except ZeroDivisionError as e:
7 print("Cannot divide by zero!")
8 print(f"Zero division error: {e}")
9except ValueError as e:
10 print("Input was not a valid integer.")
11 print(f"Value error: {e}")
- هذا الكود هو مثال على تنفيذ معالجة مختلفة لكل نوع من الاستثناءات في كتلة
except
عندما يحدث خطأ في كتلةtry
۔
التعامل مع استثناءات متعددة معًا
حدد مجموعة (tuple) عندما يمكن أن تشترك عدة فئات استثناء في نفس المنطق التعاملي۔
1try:
2 my_list = [1, 2]
3 result = my_list[3] + 10 / 0
4except (IndexError, ZeroDivisionError) as e:
5 print(f"Exception occurred: {e}")
- هذا الكود هو مثال على التقاط كل من
IndexError
وZeroDivisionError
معًا والتعامل مع الاستثناءات بنفس الطريقة۔
التقاط الاستثناءات بدون شروط
احذف الوسيط لحلقة except
إذا كنت تريد التعامل مع جميع أنواع الاستثناءات في وحدة واحدة۔
1try:
2 # This code might cause some exception
3 result = "10" + 5 # TypeError
4except Exception as e:
5 print("Unexpected error")
- مع ذلك، التعامل مع استثناءات محددة بدلاً من التقاط جميع الاستثناءات دون شرط يساعد أكثر في العثور على الأخطاء وتصحيحها۔ كلما أمكن، فإن التعامل بشكل صريح فقط مع الاستثناءات المتوقعة مثل
ValueError
أوTypeError
سيزيد من قوة كودك۔
كتلة else
كتلة else
يتم تنفيذها فقط إذا لم تحدث أي أخطاء داخل كتلة try
۔
1try:
2 #number = int(input("Enter a number: "))
3 number = 5
4 result = 10 / number
5except ZeroDivisionError as e:
6 print("Cannot divide by zero!")
7 print(f"Zero division error: {e}")
8except ValueError as e:
9 print("Input was not a valid integer.")
10 print(f"Value error: {e}")
11else:
12 # This block will execute only if no exceptions were raised
13 print("Result:", result)
- هذا الكود هو مثال يتم فيه تنفيذ كتلة
else
فقط إذا لم يحدث أي خطأ في كتلةtry
۔
كتلة finally
تُستخدم كتلة finally
لكتابة الكود الذي سيتم تنفيذه دائمًا في النهاية، بغض النظر عن حدوث خطأ في كتلة try
۔ هذا مفيد لتحرير الموارد أو إجراء مهام التنظيف۔
1try:
2 #number = int(input("Enter a number: "))
3 number = int("abc")
4 result = 10 / number
5except ZeroDivisionError as e:
6 print("Cannot divide by zero!")
7 print(f"Zero division error: {e}")
8except ValueError as e:
9 print("Input was not a valid integer.")
10 print(f"Value error: {e}")
11else:
12 # This block will execute only if no exceptions were raised
13 print("Result:", result)
14finally:
15 # This block will always execute, regardless of whether an exception was raised
16 print("Execution completed.")
- هذا الكود هو مثال يوضح أن كتلة
finally
تُنفذ بغض النظر عما إذا حدث استثناء أم لا۔
كلمة raise
المفتاحية
من الممكن أيضًا إثارة استثناء باستخدام الكلمة المفتاحية raise
عندما لا يتم استيفاء شروط معينة في الكود الحالي۔
1def divide(a, b):
2 if b == 0:
3 raise ValueError("Cannot divide by zero.")
4 return a / b
5
6try:
7 result = divide(10, 0)
8except ValueError as e:
9 print(f"Error: {e}")
- هذا الكود هو مثال على إثارة استثناء بشكل صريح باستخدام الكلمة المفتاحية
raise
عندما لا يتحقق شرط ما۔
الخاتمة
من خلال التعامل مع الأخطاء بهذه الطريقة، يمكنك منع تعطل البرنامج، وعرض رسائل مناسبة للمستخدم، ومواصلة معالجة البرنامج بطريقة سلسة۔
يمكنك متابعة المقالة أعلاه باستخدام Visual Studio Code على قناتنا على YouTube.۔ يرجى التحقق من القناة على YouTube أيضًا.۔