用于释放资源的异常处理的替代方法
alternatives to exception handling for releasing resources
我一直在学习如何编写异常安全代码。即使我们不使用异常,大多数建议的做法(如 RAII 托管内存或互斥锁)也很有用,因为程序员不必担心手动管理资源。
但是为什么我们需要例外呢?当我们没有得到想要的资源时,我们就无法继续前进,并且该过程无论如何都会终止。然后操作系统可以担心释放资源。那么,我错过了什么?我的论点有什么问题?
您理所当然地认为,当程序缺乏资源时,它无法继续前进。
如果让程序简单地死是一种选择,那么你可能不需要例外。再说一次,即使在这种情况下,您也可能从中受益 - 抛出异常可以清理内容,以便(例如)您编写的文件将被刷新,这样您就不会丢失仍在缓冲区中的数据。
对于更多情况,仅返回操作系统不是一种选择。在很多情况下,您希望尽可能使用资源,但即使不是,您仍然需要继续处理。
相关文章:
- 为什么我应该在异常处理中使用std::cerr而不是std::cout
- 当我使用 C++ 中的 C# dll 来使用 Selenium 时,存在异常处理问题
- 有没有更好的方法来处理异常? try-catch块真的很丑
- Firebase C++VS2018 SDL2-在Firebase::app::create(..)上执行异常处理
- 使用 stoi 功能进行异常处理
- 子系统中的异常处理:本机
- 与异常处理程序中的操作员<<不匹配
- 数组 C++ 上的异常处理程序
- 异常处理:如果用户输入不是三个特定字符之一
- C++ 异常处理错误输出
- 视觉 std::矢量无异常:警告 C4530:使用了C++异常处理程序,但未启用展开语义.指定 /EHsc
- C++交换机状态异常处理
- 在字符串类上的成员函数和out_of_range异常处理
- 奇怪的消息 (_Base_bitset::_M_do_to_ulong) 从溢出异常处理程序中打印出来
- 执行视觉工作室异常处理模式
- 为什么隐式转换在异常处理中从派生到基?
- C 向量异常处理:哪一种是抛出out_of_range()的更好方法以及原因
- 异常处理+多态性,如果异常方法在同一类中不起作用,则不起作用
- 如何安全地处理容器类中的方法/异常?
- 用于释放资源的异常处理的替代方法