我正在用 Python 编写一个大型批处理类型的脚本,无论是否发生异常,最后都需要进行一些清理。为此,我只需将主程序放在 try 块中,将清理放在 finally 块中。
这似乎运作良好,但我的问题是如何打印可能发生的任何异常。目前它只是忽略它们并跳转到 finally 块。
我正在用 Python 编写一个大型批处理类型的脚本,无论是否发生异常,最后都需要进行一些清理。为此,我只需将主程序放在 try 块中,将清理放在 finally 块中。
这似乎运作良好,但我的问题是如何打印可能发生的任何异常。目前它只是忽略它们并跳转到 finally 块。
您应该能够使用没有异常处理程序的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
您可以使用回溯。
就像是:
import traceback
try:
foo
except:
print(traceback.format_exc())
finally:
cleanup