【发布时间】:2015-10-03 22:52:32
【问题描述】:
看了很多视频,看了一本书,不知道什么时候什么时候不用noexcept。
所有的书都说只有在函数永远不会抛出异常时才应该使用 noexcept。
我认为应该以其他方式使用它。许多人说分配的函数不应该是 noexcept,但是如果我不想捕获这些错误怎么办,并且可以接受对 std::terminate 的调用?
简而言之,noexcept 应该用在永远不会抛出的函数上,还是用在除您想从中捕获异常的函数之外的所有函数上。
恕我直言,一些异常不需要被捕获(即内存不足等)
【问题讨论】:
-
some exceptions don't need to be caught (ie out of memory etc)认真的吗? -
是的,调用 std::terminate 对我来说很好。如何从中恢复?
-
不,不要创建抛出函数 noexcept。如果你不想抓住它,你可以随心所欲,即使没有 noexcept。
-
How does one recover from that?例如。写一些日志,关闭文件,告诉用户他是想终止还是重试等等。取决于程序在做什么。 -
跟进@deviantfan 的最新情况。如果您想终止您的程序,请终止您的程序。不要依靠您滥用关键字来为您做这件事。如果你养成了这样的习惯,它总有一天会让你大吃一惊。