用我自己的例外编写一个包装器

时间:2012-06-18 21:51:53

标签: c++ oop exception

我想创建一个FileIO类,它将提供一些像write或read这样的方法。另外我想隐藏FileIO的实现(目前,它只是从std :: fstream派生)。问题是std :: fstream可能会抛出一些异常,但我不希望我的FileIO类抛出std :: fstream异常,我想抛出自己的异常(例如FileIO :: SomethingBadHappened)。是否有一种优雅的方式来做到这一点?

我的解决方案只是使用额外的try / catch块重写std :: fstream的每个方法。

编辑: FileIO类只是一个例子。我正在寻找包装任意类的通用解决方案。

2 个答案:

答案 0 :(得分:3)

这种“优雅”的方法是不重新发明轮子。尤其是这种轮子,已经数千次往返月球。它是经过验证的。你不需要发明这个那里

答案 1 :(得分:0)

没有办法绕过它 - 你必须在任何函数调用周围放置一个try / catch块,如果你想重新抛出一个不同的异常,它会产生异常。

您应该使用封装 - 让您的类拥有一个可以传播您的调用的对象,而不是使用继承。这允许您简化界面,仅提供所需的功能,因此不需要包装执行工作的基础类的每个方法