我在Python中编写一个大型的批处理类型脚本,无论是否发生异常,最终都需要进行一些清理。要做到这一点,我只是将主程序放在try块中,并在finally块中进行清理。
这似乎运作良好,但我的问题是如何打印可能发生的任何异常。目前它只是忽略它们并跳转到finally块。
答案 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