我有某種意識形態的問題,所以:C++ - 在哪裏拋出異常?
假設我有一些模板函數
template <typename Stream>
void Foo(Stream& stream, Object& object) { ... }
這確實與此object
和stream
(例如東西,連載該對象流或類似的東西)。
比方說,我還添加一些簡單的封裝類,如(並假設這些包裝的數量等於2或3):
void FooToFile(const std::string& filename, Object& object)
{
std::ifstream stream(filename.c_str());
Foo(stream, object);
}
所以,我的問題是:
在這種情況下(思想上),如果我的stream
不好,我應該拋出異常嗎?我應該這樣做在每個包裝或只是動議通過檢查我的Foo
,所以它的機身看起來像
if (!foo.good()) throw (something);
// Perform ordinary actions
我明白,這可能是沒有編碼的最重要組成部分,這些解決方案實際上是相等的,但我只是想知道「適當的」方式來實現這一點。
謝謝。
+1:避免剪切和粘貼是編程的最終目標:) – neuro 2010-06-07 15:47:33