Python在嵌套try中引发异常

0 投票
2 回答
1059 浏览
提问于 2025-04-18 16:24

我在一个try块里有一个嵌套的try/except结构,我想在出现错误时抛出这个错误,然后退出这个方法,但它还是继续执行。

try:
    #stuff
    try:
        #do some stuff
    except:
        raise CustomException('debug info')
    #do some more stuff
except CustomException:
    #stuff
#do even more stuff
return stuff

目前,在抛出CustomException(第5行)之后,它会跳到except(第7行),然后继续执行,最后还是会返回。我希望在抛出错误时就停止执行,而不是被except捕获。如果在“#做一些其他事情”里发生CustomException,还是需要捕获这个错误并继续执行。

2 个回答

2

你觉得把try-except的结构改成下面这样怎么样?

try:
    #do some stuff
except:
    raise CustomException('debug info')
try:
    #do some more stuff
except CustomException:
    #stuff
#do even more stuff
return stuff
1

简单地写 raise 就会重新抛出之前捕获到的错误。

try:
    #stuff
    try:
        #do some stuff
    except:
        raise CustomException('debug info')
    #do some more stuff
except CustomException:
    #stuff
    raise  ## KM: This re-raise the exception

## KM: This wont be executed if CustomException('debug info') was raised
#do even more stuff

return stuff

撰写回答