簡體   English   中英

Python:在 except 塊中引發另一個異常以稍后捕獲

[英]Python: raise another exception in except block to catch later

我想要這樣的東西:

trigger = True
try:
    x = my_function()  # This can raise IndexError
    if x is None:
        raise ValueError
except IndexError:
    trigger = False
    raise ValueError
except ValueError:
    do_something()

我希望在引發 IndexError 時trigger為 False,如果引發 IndexError 或my_function()的返回值為 None,則do_something()都會發生。 我怎樣才能做到這一點?

解決這個問題的一種方法如下:

trigger = True
try:
    x = my_function()  # This can raise IndexError
    if x is None:
        raise ValueError
except (ValueError, IndexError) as e:
    if type(e) is IndexError:
        trigger = False
    do_something()

否則,您可能會重新引發錯誤,但您將需要嵌套的try塊,我假設您不希望這樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM