Python一切都在试验b

2024-03-29 06:12:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这似乎很有效,但我的问题是如何打印可能发生的任何异常。目前它只是忽略它们,跳到最后一个块。在


Tags: 脚本类型cleanuptry主程序finally
2条回答

你可以使用回溯。在

比如:

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

您应该能够使用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

相关问题 更多 >