C++ 继承另一个库中的库异常,以将它们传递给调用代码
c++ inheriting library exceptions in another library to pass them to a calling code
考虑以下情况:我有一个包含第三方库的库。这个第三方库抛出了非常好的、有用的异常,从std::exception
派生。我想将这些异常传达给调用我的库的代码,但我不想在调用代码中包含第三方库。该第三方库可能会在以后发生变化。
在我的库中创建我自己的类似乎是有意义的,这些类继承自第三方异常,如下所示:
class myException: public thirdParty {};
有没有一种简单的方法来捕获第三方实例并将其复制到myException?稍后我可能会向 myException 添加功能,但现在,我真的只想让第三方可用于调用代码,而不必在那里包含第三方的库。
当然,我确实意识到调用代码将知道第三方,因为来自第三方库的标头包含在我的库标头中,该标头包含在调用代码中。但我正在尝试建立一个合同,上面写着,"嘿,这些是我的库抛出的例外。稍后,我可能会换掉第三方库,但我仍然会抛出异常,这些异常会执行其异常的作用。
这是对的吗?有没有更好的方法?我应该让我的调用代码知道第三方异常吗?
如果目的是减少与第三方库的耦合,那么您应该将代码视为边界。因此,您不会将实现泄露给您的用户。
问题是为什么您的用户需要关心第三方库引发的异常?他们应该关心代码的抽象和接口。
因此,我不会继承这些异常,而是创建一系列异常,以反映我希望代码引发的异常。您可以为它们指定相同的名称,但您应该是这些例外的所有者。
相关文章:
- 函数从唯一代码调用正确的子类方法
- 只允许授权代码调用库中的例程
- Android 无法从本机代码调用 Java 方法 JNI
- 如何从反应原生代码调用 C 函数?
- 如何在C++代码中使用 SVM Light?(可能无需从C++代码调用可执行文件)
- 如何从C代码调用PowerShell脚本
- 从 C 代码调用C++函数时出现问题
- 从 ObjC 代码调用 .mm 类方法时编译错误
- 代码调用反向函数不会在Ubuntu 18上的G 或Clang 上编译,但神秘地在Mac OSX上使用
- 如何使用C 代码调用MATLAB自定义函数
- 该代码调用副本或移动构造函数
- 无法在不同类上编译代码调用静态功能
- 如何从可从C++代码调用的 Ada 源代码构建静态库?
- 从 CPP 代码调用 Objective-C 方法
- 如何从C++代码调用 PL/pgSQL 函数
- C++如何判断static.lib是否有效,是否可从外部代码调用
- 当C代码调用Fortran子程序时,子程序顶部会出现分段错误
- JavaScript:从浏览器和 Node.js 中的 JavaScript 代码调用C++库
- C#到C代码P/调用多个std:字符串声明导致堆栈损坏
- 使用 Visual Studio 从C++代码调用程序集过程