#include <iostream>using namespace std;class Component{public: ~Component() { cout << "In component destructor" << endl; try { throw 1; } catch (...) { cout << "Caught exception in component destructor" << endl; } }};class Container{public: ~Container() { cout << "In container destructor" << endl; Component component; }} ;int main(){ try { Container cont; throw 'a'; } catch (...) { cout << "Caught main exception ok" << endl; }return 0;}@H_419_7@以下暗示了它,但我想知道是否有人知道相关的C标准部分. @H_419_7@http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Flanguage%2Fref%2Fcplr155.htm @H_419_7@“如果在堆栈展开期间析构函数抛出异常并且未处理该异常,则调用terminate()函数.以下示例演示了这一点:”解决方法 您的组件析构函数是安全的.您引用的规则仅适用于从析构函数中抛出异常(即,向析构函数的调用者抛出)的情况. @H_419_7@ @H_419_7@编辑:这是standard的一个相关报价(强调添加) @H_419_7@
@H_419_7@Note: If a destructor called during总结
stack unwinding exits with an exception,std::terminate is called (15.5.1).
以上是内存溢出为你收集整理的C从析构函数中抛出异常全部内容,希望文章能够帮你解决C从析构函数中抛出异常所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)