ในภาษาการเขียนโปรแกรมใด ๆ เราพบสถานการณ์ที่มีข้อยกเว้น Python มีกลไกจัดการข้อยกเว้นในตัวมากมาย มีข้อผิดพลาดที่ได้รับการจัดการโดยชื่อข้อยกเว้นนี้ Python ยังมีบล็อกที่เรียกว่าสุดท้ายซึ่งจะดำเนินการโดยไม่คำนึงถึงว่ามีการจัดการข้อยกเว้นหรือไม่
ไวยากรณ์
try: # main python Code.... except: # It is optional block # Code to handle exception finally: # This Code that is always executed
ตัวอย่าง
ในโค้ดด้านล่าง เราเห็นข้อยกเว้นที่เรียกว่า NameError ที่นี่เราสร้างรหัสที่อ้างถึงตัวแปรที่ไม่ได้ประกาศ แม้ว่าจะได้รับการจัดการข้อยกเว้น แต่โค้ดยังคงทำงานในบล็อก "สุดท้าย" รหัสในบล็อก "ในที่สุด" ก็ถูกดำเนินการเช่นกัน
try:
var1 = 'Tutorials'
# NameError is raised
print(var2)
# Handle the exception
except NameError:
print("variable is not found in local or global scope.")
finally:
# Regardless of exception generation,
# this block is always executed
print('finally block code here') ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
variable is not found in local or global scope. finally block code here
โดยไม่มีการจัดการข้อยกเว้น
สมมติว่าเราออกแบบโค้ดไม่ให้จัดการกับข้อยกเว้น แม้ว่าบล็อกสุดท้ายจะรันโค้ดสำหรับข้อยกเว้นที่ไม่สามารถจัดการได้
ตัวอย่าง
try:
var1 = 'Tutorials'
# NameError is raised
print(var2)
# No exception handling
finally:
# Regardless of exception generation,
# this block is always executed
print('finally block code here') ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
finally block code here Traceback (most recent call last): File "xxx.py", line 4, in print(var2) NameError: name 'var2' is not defined