【发布时间】:2010-06-07 15:39:18
【问题描述】:
我有一个意识形态问题,所以:
假设我有一些模板函数
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
我知道这可能不是编码中最重要的部分,而且这些解决方案实际上是平等的,但我只是想知道“正确的” 方法来实现它。
谢谢。
【问题讨论】: