بايثون جرب إلا
يتيح try
لك الحظر اختبار كتلة التعليمات البرمجية بحثًا عن الأخطاء.
تتيح لك الكتلة except
التعامل مع الخطأ.
يتيح else
لك الحظر تنفيذ التعليمات البرمجية في حالة عدم وجود خطأ.
يتيح finally
لك الحظر تنفيذ التعليمات البرمجية ، بغض النظر عن نتيجة المحاولة- باستثناء الكتل.
معالجة الاستثناء
عند حدوث خطأ أو استثناء كما نسميه ، ستتوقف Python عادةً وتنشئ رسالة خطأ.
يمكن معالجة هذه الاستثناءات باستخدام try
العبارة:
مثال
ستُنشئ الكتلة try
استثناءً ، لأنه x
لم يتم تعريفه:
try:
print(x)
except:
print("An exception occurred")
نظرًا لأن كتلة try تثير خطأً ، فسيتم تنفيذ كتلة الاستثناء.
بدون كتلة try ، سيتعطل البرنامج ويحدث خطأ:
مثال
ستثير هذه العبارة خطأ ، لأنه x
لم يتم تعريفه:
print(x)
استثناءات كثيرة
يمكنك تحديد أي عدد تريده من كتل الاستثناء ، على سبيل المثال إذا كنت تريد تنفيذ كتلة خاصة من التعليمات البرمجية لنوع خاص من الخطأ:
مثال
اطبع رسالة واحدة إذا كانت كتلة المحاولة ترفع علامة NameError
وأخرى لأخطاء أخرى:
try:
print(x)
except NameError:
print("Variable x
is not defined")
except:
print("Something else went
wrong")
آخر
يمكنك استخدام else
الكلمة الأساسية لتحديد كتلة من التعليمات البرمجية ليتم تنفيذها في حالة عدم ظهور أخطاء:
مثال
في هذا المثال ، try
لا ينتج عن الكتلة أي خطأ:
try:
print("Hello")
except:
print("Something went
wrong")
else:
print("Nothing went wrong")
أخيرا
سيتم finally
تنفيذ الكتلة ، إذا تم تحديدها ، بغض النظر عما إذا كانت كتلة try تثير خطأ أم لا.
مثال
try:
print(x)
except:
print("Something went
wrong")
finally:
print("The 'try except' is finished")
يمكن أن يكون هذا مفيدًا في إغلاق الكائنات وتنظيف الموارد:
مثال
حاول فتح ملف غير قابل للكتابة والكتابة إليه:
try:
f = open("demofile.txt")
try:
f.write("Lorum Ipsum")
except:
print("Something went wrong when writing to the file")
finally:
f.close()
except:
print("Something went wrong when opening the
file")
يمكن للبرنامج المتابعة دون ترك كائن الملف مفتوحًا.
رفع استثناء
بصفتك مطور Python ، يمكنك اختيار طرح استثناء في حالة حدوث شرط.
لطرح (أو رفع) استثناء ، استخدم raise
الكلمة الأساسية.
مثال
رفع خطأ وإيقاف البرنامج إذا كان x أقل من 0:
x = -1
if x < 0:
raise Exception("Sorry, no numbers below
zero")
يتم raise
استخدام الكلمة الأساسية لرفع استثناء.
يمكنك تحديد نوع الخطأ الذي تريد رفعه والنص الذي سيتم طباعته للمستخدم.
مثال
ارفع خطأ TypeError إذا لم يكن x عددًا صحيحًا:
x = "hello"
if not type(x) is int:
raise TypeError("Only
integers are allowed")