Python异常需要最终,不需要excep

2024-05-16 09:32:24 发布

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

我有一些代码,它表示专有测试框架中的测试用例,如下所示:

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社区是否认为这是一种好做法。在


Tags: 代码testself框架sendmessagedatadef
3条回答

是的,您可以完全删除except块,只有try和{}是一种有效的python语法。示例-

^{1}$

请注意,这不会捕捉到try块中发生的任何异常/错误,我猜这正是您想要的。在

我在相当多的地方看到过这种方法,我们正在创建一些需要清除的变量/资源,不管是否发生异常/错误,但是我们不想在特定的地方处理任何异常。在

要么删除except块,要么通过添加

^{1}$

其中[Exception Class]是要排除的异常。这给它增加了一些甜头,因为真正意想不到的错误不会被它抓住。(或单独添加:

^{pr2}$

如果您不想在except块中执行任何操作,那么您可以pass它。在

^{1}$

相关问题 更多 >