我正在阅读以下应用C++书籍中的文本。在处理程序函数中抛出异常
可以从我们的处理函数中抛出异常吗?答案是 是的,确实可以抛出错误。问题是这个异常必须在每个异常规范中都可能被 转换,直到捕获异常。如果没有这样做, 应用程序将调用std :: terminate()。对于大型系统,除非您完全理解应用程序的动态,否则此 相当于为每个函数 添加了异常规范。它对你的析构函数中的所有异常都很重要。否则,在这种情况下,std :: terminate()也会被调用。
在上面的文本中,我有以下问题,需要您的理解帮助。
作者所说的“异常必须在每个可能遍历的期望规范中”是什么意思?
我的理解是析构函数我们不能使用异常。作者意味着在析构函数中捕获所有异常。
请求以简单例子阐明
感谢您的时间和帮助。
切勿使用或推荐任何人拥有不会重新抛出或中止应用程序的catch-all子句。 – 2013-07-31 13:02:16
@VladLazarenko国际海事组织,这与推荐没有任何关系 - 它是OP询问作者用报价表示的意思,并且“catch all exceptions”在这种情况下非常明确 –
@ mel-:不,捕获所有异常意味着捕获所有例外。好的C++开发人员永远不会使用这样的catch-all子句。只是为了举例,请阅读[this](http://udrepper.livejournal.com/21541.html)。 – 2013-07-31 13:24:11