python - 应用程序范围的异常处理程序是否有意义?

标签 python exception-handling

长话短说,我有一个重要的 Python 应用程序,除其他外,它在 Linux 上调用“losetup”、“mount”等。本质上是消耗系统资源,完成后必须释放。

如果我的应用程序崩溃,我想确保这些系统资源得到正确释放。

做下面这样的事情有意义吗?

def main():
    # TODO: main application entry point
    pass

def cleanup():
    # TODO: release system resources here
    pass

if __name__ == "__main__":
    try:
        main()
    except:
        cleanup()
        raise

这是通常做的事情吗?有没有更好的办法?也许是单例类中的析构函数?

最佳答案

我通常喜欢顶级异常处理程序(无论语言如何)。它们是清理资源的好地方,这些资源可能与引发异常的方法内部消耗的资源没有直接关系。

如果您有这样的框架,它也是记录这些异常的好地方。顶级处理程序会捕获那些你没有计划的奇怪异常,并让你在将来更正它们,否则,你可能永远不会知道它们。

请注意您的顶级处理程序不会抛出异常!

关于python - 应用程序范围的异常处理程序是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/95642/

相关文章:

python - MacOS Sierra 后 Django 测试速度变慢

python - Python 是否具有与 Haskell 的 'mask' 或 'bracket' 函数等效的函数?

php - 在 PHP Try Catch block 中抛出异常

C++ : Catch a divide by zero error

python - 使用 venv 虚拟环境时,我应该将哪些文件提交到我的 git 存储库?

python - pickle 在做什么?

python - 如何在 Pandas 中选择 'last business day of the month'?

python - 无法使用 to_csv() 方法从 Pandas DataFrame 创建 csv 文件

python - 使用 assert 在 python 中引发单元测试

exception-handling - 如何将一般异常(exception)记录到事件日志?