繁体   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