- 可以:当你不能正常地初始化(构造)对象时,你应该在构造函数里抛出异常。没有任何其它方法比抛出异常退出构造函数更合适了。
- 不然:你可以在析构函数里抛出异常,但这个异常必须不能越过析构函数;如果因为抛出异常而退出了析构函数,任何糟糕的情况都可能发生,因为这违反了标准库及 C++ 语言本身的基本规则。不要这么做。
给你一个忠告:在某些“苛刻的”实时系统项目中,不该使用异常。例如,请参考 JSF 航空器 C++ 代码标准。
原文地址:http://www.research.att.com/~bs/bs_faq2.html#ctor-exceptions
本文探讨了在C++中如何正确处理构造函数和析构函数内的异常。建议在构造函数中通过抛出异常来应对初始化失败的情况,并强调不应从析构函数中抛出异常以避免破坏程序状态。
2784

被折叠的 条评论
为什么被折叠?



