2013-10-04 20 views
-1

我看到这样的代码:是`try:... except:raise`在Python中执行任何操作吗?

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

究竟有没有理由把print abc在这个奇怪的try: except: raise建设?除了子句只有一个raise操作,所以如果一个异常被捕获,它只会被重新赋值,对吗?所以我想这个结构除了代码行之外什么都没带,是吧?

回答

5

这段代码没什么意义。它确实会捕获任何和所有异常,然后重新提升它们。追溯和异常是保留的,所以在其他Python代码方面,重新加载可能不会存在。

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

+0

你非常慈善。似乎作者只是不明白他在做什么。 –

+0

@DanielRoseman:永远有可能。我想给这样一个人带来怀疑的好处,让他们先解释自己,但不要打折无能。 :-) –

1

此代码是没有用处

except: 
    raise 

Reraises所有的异常,这是完全一样摆在首位没有赶上他们。它可以安全地移除。

相关问题