Exception 资源获取失败处理

Exception 资源获取失败处理,exception,dynamic-allocation,Exception,Dynamic Allocation,经过多年的编程,我从未遇到过合理的malloc或new会失败的情况(可能是因为我的malloc非常合理),尽管我总是检查它 就我而言,应用程序应该(我希望)以适当的日志条目优雅地关闭。在这种情况下你会怎么做?听到你的方法很有趣-你是等待资源还是关闭商店?如果动态分配失败,你几乎无能为力-几乎没有编写操作来处理这种情况。如果失败了,就让应用程序崩溃。我通常会让程序尽可能优雅地关闭,只需简单地记录错误消息。在C++中,我通过< catch >代码> > STD::BADYOLLC/ >代码>主(

经过多年的编程,我从未遇到过合理的malloc或new会失败的情况(可能是因为我的malloc非常合理),尽管我总是检查它


就我而言,应用程序应该(我希望)以适当的日志条目优雅地关闭。在这种情况下你会怎么做?听到你的方法很有趣-你是等待资源还是关闭商店?

如果动态分配失败,你几乎无能为力-几乎没有编写操作来处理这种情况。如果失败了,就让应用程序崩溃。

我通常会让程序尽可能优雅地关闭,只需简单地记录错误消息。在C++中,我通过< <代码> catch >代码> > <代码> STD::BADYOLLC/<代码> >代码>主()/<代码>。当执行
catch
时,堆栈展开调用的析构函数应该已经释放了一些内存,因此日志记录本身不太可能失败。我在日志代码中避免内存分配(例如使用
char*
strings而不是
std::string
strings),以进一步降低日志失败的几率。

这完全取决于应用程序,不是吗?一旦您确定了用例,适当的机制应该是显而易见的。这似乎是一个毫无意义的民意调查……我必须同意——这听起来像是一个主观的民意测验,甚至不是C语言或C++语言。我想知道人们在这种情况下的想法。是的,C,C++是因为我在相关的编程:“德尔南是的,谢谢,可以被标记为一个克隆在瓶子里的消息和船长离开最后一件事或只是崩溃?”USER 77808:你怎么能留下一个信息在一个瓶子当你不能分配一个瓶子?您的I/O库不会,也可能对于给定的平台,不能设计为在没有动态分配的情况下运行。@DeadMG-也许看看您的核心转储?这是假的。即使小规模分配失败,您也应该尝试优雅地退出;正如@Raedwald所建议的,堆栈展开可能会释放足够的资源,让I/O库输出错误消息。