当前位置:  开发笔记 > 编程语言 > 正文

什么时候可以从C++中的析构函数中抛出异常?

如何解决《什么时候可以从C++中的析构函数中抛出异常?》经验,为你挑选了2个好方法。

我知道规则是不要在析构函数中抛出一个,我理解为什么.我不敢这样做.但即使是C++ Faq Lite也说99%的这个规则很好.他们未能深入研究的另外1%是什么?

从〜()链接到C++ Faq Lite子弹点:



1> John Sonmez..:

只是不要这样做.如果恒星和行星以这样的方式排列,你发现你需要......

还是不要这样做.


似乎人们想出的唯一原因仍然是充满危险.因此,我同意,没有合理的理由这样做.

2> Charlie Mart..:

哇,我正要投票给胡安,直到我看到关于从不使用例外的部分.

好的,首先,胡安说得对.如果,不管出于什么原因,你在两个例外追逐彼此的堆栈的这种情况结束了,C++就干脆扔了它的手和它的最后一餐,并异常终止.因此,从dtor抛出异常可以保证您有可能导致意外异常终止的代码路径,这通常是一件坏事.如果这就是你想要的,那就直截了当,打电话给中止或退出,然后把它搞定.

然而,关于通过不使用异常来避免它的部分是不好的建议.对于系统而言,异常实际上是C++中必不可少的机制,这些系统将是健壮的并且可以运行很长时间.它们确实是保证您可以在不泄漏资源的情况下处理错误情况的唯一方法.

碰巧我曾经为马歇尔克莱恩工作,他写了这篇常见问题解答,并从常见问题解答书中教授C++; 因此,我可以告诉你,你错误地解释了答案.他不是说"哎呀,有一个案子可以,但是我不会对你这么做,"他说"我敢肯定,如果我绝对地,毫无例外地不要有一天,有人会提出一个有意义的离墙例子.但我不知道一个并且不相信它.不要在家里试试,并咨询律师,没有明示或暗示的保证."

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有