ฉันรู้ว่าถ้าฉันต้องการเพิ่มข้อยกเว้นอีกครั้งฉันใช้ง่ายๆ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