Tôi biết rằng nếu tôi muốn nâng lại một ngoại lệ, tôi sử dụng đơn giản raisemà không có đối số trong exceptkhối tương ứng . Nhưng với một biểu thức lồng nhau như
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
làm thế nào tôi có thể nâng cao lại SomeErrormà không phá vỡ dấu vết ngăn xếp? raisemột mình trong trường hợp này sẽ tăng lại gần đây hơn AlsoFailsError. Hoặc làm cách nào để cấu trúc lại mã của mình để tránh vấn đề này?
argvà tôi muốn thử gọi điện thoại arg.plan_B()mà có thể nâng cao một AttributeErrordo argkhông cung cấp một kế hoạch B
plan_Bngoại lệ tăng lương
plan_Bvào một hàm khác trảTruevề thành công vàFalsengoại lệ chưa? Sau đó,exceptkhối bên ngoài chỉ có thể làif not try_plan_B(): raise