تعلَّم بايثون3 مِن مدارس w3-35Python Try Except
اقتبس من ابراهيم حمادة في 6 نوفمبر، 2021, 2:05 متنويه:
لِأن التاب لا تظهر على الصفحة, و هي شيء مهم جدا في الإزاحة في كود بايثون
لذلك فإننا سنستبدل التاب بالكلمة 'tab' على هذه الصفحة
و مِن الأفضل إذا شئت أن تنسخ أي كود, أن تأخذه مِن الملف النصي, أو الملفات المُرفقة.Try Except في بايثون
تتيح لك كتلةْ try اختبار كتلة من التعليمات البرمجية للأخطاء.
و كتلةْ except تتيح لك التعامل مع الخطأ.
و كتلة finally تتيح لك تنفيذ التعليمات البرمجية، بغض النظر عن نتيجةْ الكُتَل try- except .
ملحوظة: الكتلة نعني بها مجموعة مِن الأسطر البرمجية في بايثون, و تكون في نطاق معين
فالأسطر تحت try, نقول لها كتلةْ try, و تحت except كتلةْ except, و كذلك finally.التعامل مع ال Exception(الإستثناء)
عند حدوث خطأ أو Exception كما نسميه ، سيتوقف Python عادةً وينشئ رسالة خطأ.
يمكن التعامل مع هذه الاستثناءاتExceptions باستخدام عبارة try:
مثال
سوف تُنشئ كتلة try خطأ أو Exception، لأن xلم يتم تعريفُه:
try:
tab print(x)
except:
tab print("An exception occurred")ستكون النتيجة:
An exception occurred
جربها بنفسك مِن ملف try_except.py
نظرًا لأن كتلةْ try تثيرُ خطأً ، فسيتم تنفيذ كتلةْ except.
بدون كتلةْ try ، سيتعطل البرنامج ويثير خطأً:
مثال
ستُثير هذه العبارة خطأ ، لأنَّ xلم يتم تعريفُه:
print(x)ستكون النتيجة:
Traceback (most recent call last):
File "try_except_error.py", line 3, in
print(x)
NameError: name 'x' is not defined
جربها بنفسك مِن ملف try_except_error.pyأكثر مِن استثناء أو Exception
يمكنك تحديد العديد من كتل except كما تريد ،
على سبيل المثال ، إذا كنتَ تريد تنفيذ كتلة خاصة مِن التعليمات البرمجية لنوع خاص من الخطأ:
مثال
طباعة رسالة معينة إذا كانت كتلةْ try تثير NameError ورسالة أخرى لأخطاء أخرى:
try:
tab print(x)
except NameError:
tab print("Variable x is not defined")
except:
tab print("Something else went wrong")ستكون النتيجة:
Variable x is not defined
جربها بنفسك مِن ملف try_except2.pyElse
يمكنك استخدام الكلمة الرئيسية else لتحديد كتلة من التعليمات البرمجية ليتم تنفيذها إذا لم يتم حدوث أي أخطاء:
مثال
في هذا المثال ، لا تُولد كتلة try أي خطأ:
try:
tab print("Hello")
except:
tab print("Something went wrong")
else:
tab print("Nothing went wrong")ستكون النتيجة:
Hello
Nothing went wrong
جربها بنفسك مِن ملف try_except3.pyFinally
سيتم تنفيذ الكتلة finally ، إذا تم وضعها ، بغض النظر عما إذا كانت كتلة try تثير خطأ أم لا.
مثال
try:
tab print(x)
except:
tab print("Something went wrong")
finally:
tab print("The 'try except' is finished")ستكون النتيجة:
Something went wrong
The 'try except' is finished
جربها بنفسك مِن ملف try_except4.py
يمكن أن يكون هذا الأُسلوب مفيدًا في إغلاق الكائنات وتنظيف الموارد:
مثال
حاوِل فتح ملف غير قابل للكتابة والكتابة فيه:
try:
tab f = open("demofile.txt")
tab f.write("Lorum Ipsum")
except:
tab print("Something went wrong when writing to the file")
finally:
tab f.close()ستكون النتيجة:
Something went wrong when writing to the file
جربها بنفسك مِن ملف try_except5.py
الآن يمكن أن يستمر البرنامج ، دون ترك كائن الملف مفتوحا.Raise an exception(عمل Exception بشكل متعمد)
كمطور بيثون يمكنك اختيار إثارةْ أو عمل Exception في حالة حدوث شرط معين.
لطرح (أو عمل) Exception ، استخدم الكلمة الرئيسية raise.
مثال
إثارةْ خطأ وإيقاف البرنامج إذا كان x أقل من 0:
x = -1if x < 0:
tab raise Exception("Sorry, no numbers below zero")ستكون النتيجة:
Traceback (most recent call last):
File "ref_keyword_raise.py", line 4, in
raise Exception("Sorry, no numbers below zero")
Exception: Sorry, no numbers below zero
جربها بنفسك مِن ملف ref_keyword_raise.py
يتم استخدام الكلمة الرئيسية raise لعمل خطأ أو Exception.يمكنك تحديد نوع الخطأ الذي تريد طرحه والنص الذي سيتم طباعته للمستخدم.
مثال
إثارةْ أو إحداث TypeError إذا لم يكن x عددًا صحيحًا:
x = "hello"if not type(x) is int:
tab raise TypeError("Only integers are allowed")ستكون النتيجة:
Traceback (most recent call last):
File "ref_keyword_raise2.py", line 4, in
raise TypeError("Only integers are allowed")
TypeError: Only integers are allowed
جربها بنفسك مِن ملف ref_keyword_raise2.py
الدرس مع الملفات المُرفقة:
https://www.dropbox.com/s/mjq3smcdy3flctc/35Python%20Try%20Except.zip?dl=1
تنويه:
لِأن التاب لا تظهر على الصفحة, و هي شيء مهم جدا في الإزاحة في كود بايثون
لذلك فإننا سنستبدل التاب بالكلمة 'tab' على هذه الصفحة
و مِن الأفضل إذا شئت أن تنسخ أي كود, أن تأخذه مِن الملف النصي, أو الملفات المُرفقة.
Try Except في بايثون
تتيح لك كتلةْ try اختبار كتلة من التعليمات البرمجية للأخطاء.
و كتلةْ except تتيح لك التعامل مع الخطأ.
و كتلة finally تتيح لك تنفيذ التعليمات البرمجية، بغض النظر عن نتيجةْ الكُتَل try- except .
ملحوظة: الكتلة نعني بها مجموعة مِن الأسطر البرمجية في بايثون, و تكون في نطاق معين
فالأسطر تحت try, نقول لها كتلةْ try, و تحت except كتلةْ except, و كذلك finally.
التعامل مع ال Exception(الإستثناء)
عند حدوث خطأ أو Exception كما نسميه ، سيتوقف Python عادةً وينشئ رسالة خطأ.
يمكن التعامل مع هذه الاستثناءاتExceptions باستخدام عبارة try:
مثال
سوف تُنشئ كتلة try خطأ أو Exception، لأن xلم يتم تعريفُه:
try:
tab print(x)
except:
tab print("An exception occurred")
ستكون النتيجة:
An exception occurred
جربها بنفسك مِن ملف try_except.py
نظرًا لأن كتلةْ try تثيرُ خطأً ، فسيتم تنفيذ كتلةْ except.
بدون كتلةْ try ، سيتعطل البرنامج ويثير خطأً:
مثال
ستُثير هذه العبارة خطأ ، لأنَّ xلم يتم تعريفُه:
print(x)
ستكون النتيجة:
Traceback (most recent call last):
File "try_except_error.py", line 3, in
print(x)
NameError: name 'x' is not defined
جربها بنفسك مِن ملف try_except_error.py
أكثر مِن استثناء أو Exception
يمكنك تحديد العديد من كتل except كما تريد ،
على سبيل المثال ، إذا كنتَ تريد تنفيذ كتلة خاصة مِن التعليمات البرمجية لنوع خاص من الخطأ:
مثال
طباعة رسالة معينة إذا كانت كتلةْ try تثير NameError ورسالة أخرى لأخطاء أخرى:
try:
tab print(x)
except NameError:
tab print("Variable x is not defined")
except:
tab print("Something else went wrong")
ستكون النتيجة:
Variable x is not defined
جربها بنفسك مِن ملف try_except2.py
Else
يمكنك استخدام الكلمة الرئيسية else لتحديد كتلة من التعليمات البرمجية ليتم تنفيذها إذا لم يتم حدوث أي أخطاء:
مثال
في هذا المثال ، لا تُولد كتلة try أي خطأ:
try:
tab print("Hello")
except:
tab print("Something went wrong")
else:
tab print("Nothing went wrong")
ستكون النتيجة:
Hello
Nothing went wrong
جربها بنفسك مِن ملف try_except3.py
Finally
سيتم تنفيذ الكتلة finally ، إذا تم وضعها ، بغض النظر عما إذا كانت كتلة try تثير خطأ أم لا.
مثال
try:
tab print(x)
except:
tab print("Something went wrong")
finally:
tab print("The 'try except' is finished")
ستكون النتيجة:
Something went wrong
The 'try except' is finished
جربها بنفسك مِن ملف try_except4.py
يمكن أن يكون هذا الأُسلوب مفيدًا في إغلاق الكائنات وتنظيف الموارد:
مثال
حاوِل فتح ملف غير قابل للكتابة والكتابة فيه:
try:
tab f = open("demofile.txt")
tab f.write("Lorum Ipsum")
except:
tab print("Something went wrong when writing to the file")
finally:
tab f.close()
ستكون النتيجة:
Something went wrong when writing to the file
جربها بنفسك مِن ملف try_except5.py
الآن يمكن أن يستمر البرنامج ، دون ترك كائن الملف مفتوحا.
Raise an exception(عمل Exception بشكل متعمد)
كمطور بيثون يمكنك اختيار إثارةْ أو عمل Exception في حالة حدوث شرط معين.
لطرح (أو عمل) Exception ، استخدم الكلمة الرئيسية raise.
مثال
إثارةْ خطأ وإيقاف البرنامج إذا كان x أقل من 0:
x = -1
if x < 0:
tab raise Exception("Sorry, no numbers below zero")
ستكون النتيجة:
Traceback (most recent call last):
File "ref_keyword_raise.py", line 4, in
raise Exception("Sorry, no numbers below zero")
Exception: Sorry, no numbers below zero
جربها بنفسك مِن ملف ref_keyword_raise.py
يتم استخدام الكلمة الرئيسية raise لعمل خطأ أو Exception.
يمكنك تحديد نوع الخطأ الذي تريد طرحه والنص الذي سيتم طباعته للمستخدم.
مثال
إثارةْ أو إحداث TypeError إذا لم يكن x عددًا صحيحًا:
x = "hello"
if not type(x) is int:
tab raise TypeError("Only integers are allowed")
ستكون النتيجة:
Traceback (most recent call last):
File "ref_keyword_raise2.py", line 4, in
raise TypeError("Only integers are allowed")
TypeError: Only integers are allowed
جربها بنفسك مِن ملف ref_keyword_raise2.py
الدرس مع الملفات المُرفقة:
https://www.dropbox.com/s/mjq3smcdy3flctc/35Python%20Try%20Except.zip?dl=1