【发布时间】:2014-07-30 14:23:36
【问题描述】:
我在下面的代码中有类似的东西,我有多个 except 语句,所有这些语句都必须执行 someCleanUpCode() 函数。我想知道是否有更短的方法可以做到这一点。就像一个只有在出现异常时才执行的块。我不能使用 finally 块,因为当 try 没有引发错误时,它也会被执行。而且我只需要在出现错误时执行 someCleanUpCode() 。我首先想打印错误,然后运行 someCleanUpCode()
try:
dangerousCode()
except CalledProcessError:
print "There was an error without a message"
someCleanUpCode()
except Exception as e:
print "There was an error: " +repr(e)
someCleanUpCode()
【问题讨论】:
-
我不知道有任何其他方法可以做到这一点。我认为当前的代码很好 - 它清楚地表明在每个错误情况下都会调用
someCleanUpCode。 -
好的,我会坚持使用该代码 ;)
-
假设危险代码始终是一个函数,并且您有很多,您可能希望使用 @foo 包装器包装它,该包装器在调用该函数时添加 try/except 例程。跨度>