ฉันรู้ว่าถ้าฉันต้องการเพิ่มข้อยกเว้นอีกครั้งฉันใช้ง่ายๆraise
โดยไม่มีข้อโต้แย้งในexcept
บล็อกที่เกี่ยวข้อง แต่ได้รับการแสดงออกที่ซ้อนกันเช่น
try:
something()
except SomeError as e:
try:
plan_B()
except AlsoFailsError:
raise e # I'd like to raise the SomeError as if plan_B()
# didn't raise the AlsoFailsError
ฉันจะเพิ่มอีกครั้งSomeError
โดยไม่ทำลายสแต็กเทรซได้อย่างไร เพียงอย่างเดียวจะในกรณีนี้อีกครั้งเพิ่มมากขึ้นล่าสุดraise
AlsoFailsError
หรือฉันจะ refactor รหัสของฉันเพื่อหลีกเลี่ยงปัญหานี้ได้อย่างไร
plan_B
ฟังก์ชั่นอื่นที่ให้ผลTrue
สำเร็จFalse
หรือไม่? จากนั้นexcept
บล็อกด้านนอกอาจเป็นif not try_plan_B(): raise