ในการใช้การจัดการข้อยกเว้นใน python ก่อนอื่นเราต้องจับ all ยกเว้นส่วนคำสั่ง
Python ให้คำสำคัญ "ลอง" และ "ยกเว้น" เพื่อตรวจจับข้อยกเว้น รหัสบล็อก "ลอง" จะดำเนินการตามคำสั่ง อย่างไรก็ตาม หากเกิดข้อยกเว้น รหัส "ลอง" ที่เหลือจะไม่ทำงานและส่วนคำสั่งยกเว้นจะถูกดำเนินการ
try: some_statements_here except: exception_handling
มาดูไวยากรณ์ด้านบนพร้อมตัวอย่างง่ายๆ กัน −
try: print("Hello, World!") except: print("This is an error message!")
ผลลัพธ์
Hello, World!
ข้างบนนี้เป็นตัวอย่างง่ายๆ มาทำความเข้าใจแนวคิดข้างต้นด้วยตัวอย่างอื่นกัน −
import sys List = ['abc', 0, 2, 4] for item in List: try: print("The List Item is", item) r = 1/int(item) break except: print("Oops!",sys.exc_info()[0],"occured.") print('\n') print("Next Item from the List is: ") print() print("The reciprocal of",item,"is",r)
ผลลัพธ์
The List Item is abc Oops! <class 'ValueError'> occured. Next Item from the List is: The List Item is 0 Oops! <class 'ZeroDivisionError'> occured. Next Item from the List is: The List Item is 2 The reciprocal of 2 is 0.5
ในโปรแกรมข้างต้น ลูปจะทำงานจนกว่าเราจะได้ (ตามที่ผู้ใช้ป้อน) เป็นจำนวนเต็มที่มีส่วนกลับที่ถูกต้อง รหัสที่ทำให้เกิดข้อยกเว้นจะอยู่ในบล็อกการลอง
ในกรณีที่มีข้อยกเว้นเกิดขึ้น จะถูกดักจับโดยบล็อกยกเว้น เราสามารถทดสอบโปรแกรมข้างต้นโดยมีข้อผิดพลาดข้อยกเว้นที่แตกต่างกัน ด้านล่างนี้คือข้อผิดพลาดทั่วไปบางประการ -
-
IOError
เกิดขึ้นในกรณีที่เราไม่สามารถเปิดไฟล์ได้
-
ImportError
ยกขึ้นในกรณีที่โมดูลหายไป
-
ValueError
มันเกิดขึ้นทุกครั้งที่เราส่งอาร์กิวเมนต์ด้วยประเภทที่ถูกต้องแต่มีค่าที่ไม่เหมาะสมของโอเปอเรเตอร์หรือฟังก์ชันในตัว
-
แป้นพิมพ์ขัดจังหวะ
เมื่อใดก็ตามที่ผู้ใช้กดปุ่มขัดจังหวะ (โดยทั่วไปคือ control-c)
-
ข้อผิดพลาด EOF
มีข้อยกเว้นเกิดขึ้นเมื่อฟังก์ชันในตัวเข้าถึงเงื่อนไขการสิ้นสุดไฟล์ (EOF) โดยไม่อ่านข้อมูลใดๆ