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 raise
mà không có đối số trong except
khố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 SomeError
mà không phá vỡ dấu vết ngăn xếp? raise
mộ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?
arg
và tôi muốn thử gọi điện thoại arg.plan_B()
mà có thể nâng cao một AttributeError
do arg
không cung cấp một kế hoạch B
plan_B
ngoại lệ tăng lương
plan_B
vào một hàm khác trảTrue
về thành công vàFalse
ngoại lệ chưa? Sau đó,except
khối bên ngoài chỉ có thể làif not try_plan_B(): raise