2016-11-17 39 views
8

我正在從Stroustrup的C++編程語言第4版開始練習。其中一項任務是這樣形成的:對於所有異常都有一個基類有什麼缺點?

考慮使用類Exception作爲用作例外的所有類的基礎。它應該是什麼樣子?它應該如何使用?它可以做什麼好? 要求使用這樣的類可能會導致什麼缺點?

答案看起來很像std::exception,保存的缺點部分 - 唯一一個我能想象是__vptr這通常可以忽略不計的成本。我在這裏錯過了什麼?

+1

這是一個基於意見的問題,取決於您如何查看例外情況。當他寫這篇文章時,他想到的缺點可能是它允許消費者編寫實際上並不能解決特殊情況的全部代碼。 –

回答

1

缺點是,如果您嘗試捕獲繼承樹底部的異常,您將捕獲從該繼承樹派生的所有異常,其中一些異常可能表明與您期望的事情非常不同。

更糟的是,一個開發人員使用了很多可能會拋出異常並且不知道其中某些意思的函數的開發人員可能會簡單地捕獲基類Exception,並在遇到錯誤時僅返回一個非特定的Exception實例,因此很難調試代碼,並且可能導致整個程序失敗,只是因爲易於修復的異常不會導致任何問題。

相關問題