Yip*_*Yay 3 c++ exception stream
我有某种意识形态问题,所以:
假设我有一些模板化的功能
template <typename Stream>
void Foo(Stream& stream, Object& object) { ... }
Run Code Online (Sandbox Code Playgroud)
这确实与该东西object和stream (例如,串行化该对象到流或类似的东西).
假设我也添加了一些简单的包装器(并且假设这些包装器的数量等于2或3):
void FooToFile(const std::string& filename, Object& object)
{
std::ifstream stream(filename.c_str());
Foo(stream, object);
}
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:
在这种情况下(在意识形态上),如果我的stream情况不好,我应该抛出异常吗?我应该在每个包装器中执行此操作,还是只将该检查移动到我的Foo,以便它的主体看起来像
if (!foo.good()) throw (something);
// Perform ordinary actions
Run Code Online (Sandbox Code Playgroud)
我知道这可能不是编码中最重要的部分,这些解决方案实际上是相同的,但我只是不知道"正确"的方法来实现它.
谢谢.
在这种情况下,最好将它放在较低级别的Foo函数中,这样您就不必在所有包装器中复制验证和异常抛出代码.通常,正确使用异常可以通过删除大量数据验证检查来使代码更加清晰,否则您可能会在调用堆栈中的多个级别进行冗余操作.
| 归档时间: |
|
| 查看次数: |
335 次 |
| 最近记录: |