Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中引发延迟异常?_Python_Python 3.x_Exception - Fatal编程技术网

在python中引发延迟异常?

在python中引发延迟异常?,python,python-3.x,exception,Python,Python 3.x,Exception,我想知道python中是否有用于此用例的标准机制: try: do_a() if something_happens(): raise DelayedException # is really only raised after do_b() do_b() except DelayedException as de: # handle de after the entire try/except block completed 很明显,我可以将异

我想知道python中是否有用于此用例的标准机制:

try:
    do_a()
    if something_happens():
        raise DelayedException # is really only raised after do_b()
    do_b()
except DelayedException as de:
    # handle de after the entire try/except block completed
很明显,我可以将异常信息存储在一个变量中以供以后处理,但我想知道python中是否内置了这样一种机制(3.x,如果这样做会有所不同的话)

编辑: 澄清一下,在我的用例中,异常处理需要do_b()的结果。

是的,但它很难看:

try:
    do_a()
    try:
        if do_something():
            raise DelayedException()
    finally:
        do_b()
except DelayedException:
    pass

如果
do_b()
引发了自己的异常,您希望发生什么?在try finally块中包装
do_something()
时(在finally块中使用
do_b()
时)不这样做吗?不,一件事也没有。这看起来不像是异常的用例;只需记录错误并稍后检查。@dhke:That在
except
之后而不是之前运行
do_b
。@user2357112您正在考虑尝试,但最后除外,是吗?要获得异常处理程序之前的finally,您需要一个内部try finally块。它确实有点难看!我花了几本书才明白这是怎么回事,所以我想这不是一个好兆头,也许使用变量会让意图更清楚。