在try块中的Python一切

时间:2011-08-31 23:33:46

标签: python exception-handling try-catch-finally

我在Python中编写一个大型的批处理类型脚本,无论是否发生异常,最终都需要进行一些清理。要做到这一点,我只是将主程序放在try块中,并在finally块中进行清理。

这似乎运作良好,但我的问题是如何打印可能发生的任何异常。目前它只是忽略它们并跳转到finally块。

2 个答案:

答案 0 :(得分:4)

您应该只能使用没有异常处理程序的try / finally块。它不会捕获异常或抑制回溯,只需确保运行清理代码,无论是否存在异常。这就是finally的全部内容。

以下是一个例子:

Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> try:
...     print 'begin try'
...     assert False
...     print 'end try'
... finally:
...     print 'finally'
... 
begin try
finally
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
AssertionError

答案 1 :(得分:3)

你可以使用追溯。

类似的东西:

import traceback
try:
    foo
except:
    print(traceback.format_exc())
finally:
     cleanup