0
A
回答
6
如果由于展开堆栈来处理另一个异常而调用析构函数,那么抛出将终止程序 - 一次不能有多个未处理的异常。
如果数组元素的析构函数抛出,那么其余元素的析构函数将不会被调用。这可能会导致内存泄漏和其他不良情况。
投掷析构器使得难以或不可能提供异常保证。例如,用于执行具有强大例外保证(即保证如果抛出异常,没有任何变化)的“复制和交换”成语将失败:
thing & thing::operator=(thing const & t) {
// Copy the argument. If this throws, there are no side-effects.
thing copy(t);
// Swap with this. Must have (at least) a strong guarantee
this->swap(copy);
// Now the operation is complete, so nothing else must throw.
// Destroy the copy (now the old value of "this") on return.
// If this throws, we break the guarantee.
return *this;
}
相关问题
- 1. 在构造函数中抛出的异常:析构函数是否被调用?
- 2. 运行析构函数,当构造函数抛出异常
- 3. 在MSVC中析构函数抛出异常
- 4. 当我在C++析构函数中抛出异常时会发生什么?
- 5. 什么是抛出异常
- 6. 从构造函数中抛出异常
- 7. Angular2,构造函数DI抛出异常
- 8. Fluent Nhibernate抛出异常FluentNHibernate.Automapping.IAutoClasslike ...缺少无参数构造函数
- 9. C++从析构函数中抛出异常
- 10. 构造函数和抛出异常
- 11. C++:从析构函数中抛出异常
- 12. EJB3构造函数抛出异常?
- 13. 如果派生类析构函数抛出一个异常,基类析构函数会发生什么
- 14. 调用可以在C++中抛出异常的函数的析构函数
- 15. 什么应该是抛出的(默认)构造函数中的异常保证?
- 16. ServerSocket的构造函数抛出异常
- 17. 如何处理抛出异常的文件析构函数?
- 18. 从守卫类析构函数抛出异常导致std :: terminate
- 19. 在postgresql函数中抛出异常
- 20. 空std :: list当析构函数被调用时抛出异常
- 21. parseuser.SignUpAsync()抛出什么异常?
- 22. jsoup.element.select()抛出什么异常?
- 23. Newtonsoft.Json.DeserializeObject抛出什么异常?
- 24. JSONEncoder.encode在Swift中抛出什么异常?
- 25. 从构造函数中抛出异常在C++中
- 26. 抛出Task.ThrowIfExceptional的异常是什么?
- 27. 为什么在java中抛出异常而在C++中抛出异常?
- 28. C++析构函数异常
- 29. new []/delete []并在C++中抛出构造函数/析构函数
- 30. Netty异常处理 - Handler抛出异常,那么是什么?
将异常另一个异常处于活动状态(未捕获)导致程序立即终止。 –
举个例子,你认为这是一个好主意 – Rob
@Rob我不认为这是一个好主意,但我不明白为什么它不是,这就是为什么我问。小丑有一个好点 –