用于释放资源的异常处理的替代方法

alternatives to exception handling for releasing resources

本文关键字:方法 异常处理 释放资源 用于      更新时间:2023-10-16

我一直在学习如何编写异常安全代码。即使我们不使用异常,大多数建议的做法(如 RAII 托管内存或互斥锁)也很有用,因为程序员不必担心手动管理资源。

但是为什么我们需要例外呢?当我们没有得到想要的资源时,我们就无法继续前进,并且该过程无论如何都会终止。然后操作系统可以担心释放资源。那么,我错过了什么?我的论点有什么问题?

您理所当然地认为,当程序缺乏资源时,它无法继续前进。

如果让程序简单地死是一种选择,那么你可能不需要例外。再说一次,即使在这种情况下,您也可能从中受益 - 抛出异常可以清理内容,以便(例如)您编写的文件将被刷新,这样您就不会丢失仍在缓冲区中的数据。

对于更多情况,仅返回操作系统不是一种选择。在很多情况下,您希望尽可能使用资源,但即使不是,您仍然需要继续处理。