ในภาษาการเขียนโปรแกรมใด ๆ เราพบสถานการณ์ที่มีข้อยกเว้น 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