-1

我看到这样的代码:

try:
    print abc # actually different code was here but it doesn't matter, right?
except:
    raise

有理由进行print abc这种奇怪的try: except: raise结构吗?except 子句只有一个raise操作,所以如果一个异常被捕获,它只是重新引发外部,对吧?所以我猜这个结构除了代码行之外什么都没有,对吗?

4

2 回答 2

5

这段代码没有什么意义。它确实会捕获任何和所有异常,然后再次重新引发它们。回溯和异常得到维护,因此就其他 Python 代码而言,重新引发也可能不存在。

可能代码曾经做的不止于此,但作者希望通过保持缩进相同来最小化 VCS 更改。或者也许认为在发生异常时插入日志记录或调试代码会很方便。

于 2013-10-04T20:37:31.933 回答
1

这段代码相当没用

 except:
     raise

重新引发所有异常,这与一开始不捕获它们完全相同。它可以安全地移除。

于 2013-10-04T20:39:08.300 回答