是`try:... except:raise`用Python做任何事情?

时间:2013-10-04 20:36:50

标签: python exception-handling

我看到这样的代码:

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

是否有理由将print abc置于这种奇怪的try: except: raise构造中? Except子句只有一个raise操作,所以如果捕获了异常,它只被重新加入外部,对吧?所以我猜这个结构除了代码行之外什么也没带来,我是对的吗?

2 个答案:

答案 0 :(得分:5)

此代码中没有什么意义。它确实只捕获任何和所有异常,然后再次重新提升它们。回溯和异常都得到了维护,因此就其他Python代码而言,重新加注也可能不存在。

可能是代码曾经做过多次但是作者希望通过保持缩进相同来最小化VCS的变化。或者也许认为在异常的情况下插入日志记录或调试代码是一个方便的点。

答案 1 :(得分:1)

此代码相当无用

 except:
     raise

重新引用所有异常,这与首先不捕获它们完全相同。它可以安全地删除。