考虑以下情况:我有一个包含第三方库的库。这个第三方库抛出了非常好的、有用的异常,源自std::exception
. 我想将这些异常传达给调用我的库的代码,但我也不想在调用代码中包含第 3 方库。该第 3 方库以后可能会发生变化。
在我的库中创建我自己的继承第三方异常的类似乎很有意义,如下所示:
class myException: public thirdParty {};
有没有一种简单的方法来捕获第三方实例并将其复制到 myException?稍后我可能会向 myException 添加功能,但现在,我真的只想让第三方对调用代码可用,而不在那里包含第三方库。
当然,我确实意识到调用代码会知道thirdParty,因为第三方库的标头包含在我的库标头中,而我的库标头包含在调用代码中。但是我正在尝试建立一个合同,上面写着:“嘿,这些是我的库抛出的异常。稍后,我可能会换掉第三方库,但我仍然会抛出异常,它的异常所做的事情。 "
这是正确的吗?有没有更好的方法来做到这一点?我应该让我的调用代码知道第三方异常吗?