![]() |
1
11
我喜欢一般的顶级异常处理程序(不管语言如何)。它们是一个清理资源的好地方,这些资源可能与抛出异常的方法中消耗的资源没有直接关系。 这也是一个很棒的地方 日志 如果你有这样一个框架的话,这些例外就可以了。顶级处理程序将捕获那些您没有计划的奇怪的异常,并允许您在将来纠正它们,否则,您可能永远不会知道它们。 请注意,您的顶级处理程序不会抛出异常! |
![]() |
2
7
析构函数(如在一个方法中)是一个坏主意,因为它们不能保证被调用。ATEXIT模块是一种更安全的方法,但是如果Python解释器崩溃(而不是Python应用程序),或者使用了os._exit(),或者进程被严重杀死,或者机器重新启动,这些模块仍然不会启动。(当然,最后一项在您的情况下不是问题。)如果您的进程容易崩溃(例如,它使用易变的第三方扩展模块),您可能希望在一个简单的父进程中进行清理以获得更多的隔离。 如果您不太担心,请使用ATEXIT模块。 |
![]() |
3
2
应用程序范围的处理程序可以。它们非常适合伐木。只要确保应用程序范围内的应用程序是持久的,不太可能崩溃。 |
![]() |
4
2
当然,如果使用类,应该释放它们在析构函数中分配的资源。使用try:在整个应用程序上,只要您想释放尚未被类的析构函数释放的资源。 而不是使用catch all except:,您应该使用以下块:
这将确保以更为蟒蛇式的方式进行清理。 |
![]() |
5
1
这似乎是一种合理的方法,比单例类上的析构函数更直接和可靠。你也可以看看 atexit “模块。(发音为“at exit”,而不是“a tex it”或类似的。我困惑了很久。) |
![]() |
6
1
考虑编写一个上下文管理器并使用WITH语句。 |