Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

คุณละเว้นข้อยกเว้นใน Python อย่างถูกต้องได้อย่างไร


สามารถทำได้โดยทำตามโค้ดต่อไปนี้

try:
x,y =7,0
z = x/y
except:
pass

หรือ

try:
x,y =7,0
z = x/y
except Exception:
pass


รหัสเหล่านี้ข้ามข้อยกเว้นในคำสั่ง try และละเว้นส่วนคำสั่งยกเว้น และไม่ทำให้เกิดข้อยกเว้นใดๆ

ความแตกต่างในโค้ดด้านบนคือโค้ดแรกจะจับ KeyboardInterrupt, SystemExit ฯลฯ ซึ่งได้มาจาก exceptions.BaseException ไม่ใช่ exceptions.Exception

เป็นที่ทราบกันดีอยู่แล้วว่าการยกเว้นการโยนครั้งสุดท้ายจะถูกจดจำใน Python วัตถุบางส่วนที่เกี่ยวข้องกับคำสั่งการโยนข้อยกเว้นจะถูกเก็บไว้จนกว่าจะถึงข้อยกเว้นถัดไป เราอาจต้องการทำสิ่งต่อไปนี้แทนที่จะเพียงแค่ผ่าน:

try:
x,y =7,0
z = x/y
except Exception:
sys.exc_clear()

สิ่งนี้จะล้างข้อยกเว้นที่ส่งล่าสุด