我有一些代码,它表示专有测试框架中的测试用例,如下所示:
def test_alarm(self):
self.setup_some_test_data()
try:
self.send_alarm_message()
except:
print "Unexpected error:", sys.exc_info()
finally:
self.teardown_some_test_data()
我被告知不要打印,因为这是不必要的,测试框架在任何情况下都会捕捉到任何异常,这比在这里捕捉它们要好,但是我仍然需要始终清除数据,就像在finally
块中一样。在
我是否要完全删除except
块?或者,我如何构造代码以有效地拥有一个空的except
块并保留finally
?在Python中这是一个很好的实践,还是有更好的方法呢?在
Edit请注意,我确实尝试完全删除except
块,而且我没有明显的运行时问题,尽管在调用send_alarm_message()
时不太可能出现异常,但我不清楚如果抛出异常,它将如何工作,或者Python社区是否认为这是一种好做法。在
是的,您可以完全删除except块,只有}是一种有效的python语法。示例-
^{1}$try
和{请注意,这不会捕捉到
try
块中发生的任何异常/错误,我猜这正是您想要的。在我在相当多的地方看到过这种方法,我们正在创建一些需要清除的变量/资源,不管是否发生异常/错误,但是我们不想在特定的地方处理任何异常。在
要么删除except块,要么通过添加
^{1}$其中[Exception Class]是要排除的异常。这给它增加了一些甜头,因为真正意想不到的错误不会被它抓住。(或单独添加:
^{pr2}$如果您不想在
^{1}$except
块中执行任何操作,那么您可以pass
它。在相关问题 更多 >
编程相关推荐