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我不認爲這是一個好主意,但我不明白爲什麼它不是,這就是爲什麼我問。小丑有一個好點 –