gpt4 book ai didi

c++继承另一个库中的库异常以将它们传递给调用代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:55:08 25 4
gpt4 key购买 nike

考虑以下情况:我有一个包含第三方库的库。这个第三方库抛出从 std::exception 派生的非常好的、有用的异常。我想将这些异常传递给调用我的库的代码,但我不想也必须在调用代码中包含第 3 方库。该第 3 方库可能会在以后发生变化。

在我的库中创建我自己的继承自第三方异常的类似乎很有意义,如下所示:

class myException: public thirdParty {};

有没有一种简单的方法来捕获第三方的实例并将其复制到 myException?稍后我可能会向 myException 添加功能,但现在,我真的只想让调用代码可以使用 thirdParty,而不需要在其中包含第三方库。

当然,我确实意识到调用代码会知道第三方库,因为来自第三方库的 header 包含在我的库 header 中,而库 header 包含在调用代码中。但我正在尝试建立一个契约(Contract),上面写着,“嘿,这些是我的库抛出的异常。稍后,我可能会换掉第三方库,但我仍然会抛出异常来执行它的异常所做的事情。 "

这样对吗?有更好的方法吗?我是否应该让我的调用代码知道第三方异常?

最佳答案

如果目标是减少与第三方库的耦合,那么您应该将您的代码视为边界。因此,您不会将实现泄露给您的用户。

问题是为什么您的用户需要关心第三方库抛出的异常?他们应该关心您的代码的抽象和接口(interface)。

所以我不会继承那些异常,而是创建一系列异常来反射(reflect)我希望我的代码抛出的异常。您可以给它们起相同的名字,但您应该是这些异常(exception)的所有者。

关于c++继承另一个库中的库异常以将它们传递给调用代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10851772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com