0

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

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

4

2 回答 2

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
于 2011-08-31T23:51:10.563 回答
3

您可以使用回溯。

就像是:

import traceback
try:
    foo
except:
    print(traceback.format_exc())
finally:
     cleanup
于 2011-08-31T23:38:26.247 回答