次の状況を考えてみましょう: サードパーティのライブラリを含むライブラリがあります。このサード パーティ ライブラリは、std::exception
. ライブラリを呼び出すコードにこれらの例外を伝えたいのですが、呼び出し元のコードにサード パーティのライブラリも含める必要はありません。そのサードパーティのライブラリは、後で変更される可能性があります。
次のように、サードパーティの例外から継承する独自のクラスをライブラリに作成することは理にかなっているようです。
class myException: public thirdParty {};
thirdParty のインスタンスをキャッチして myException にコピーする簡単な方法はありますか? 後で myException に機能を追加するかもしれませんが、今のところ、サードパーティのライブラリを含めずに、サードパーティを呼び出し元のコードで利用できるようにしたいだけです。
もちろん、サードパーティ ライブラリのヘッダーがライブラリ ヘッダーに含まれ、呼び出しコードに含まれるため、呼び出しコードがサードパーティについて認識していることは認識しています。しかし、私は次のような契約を確立しようとしています。「ねえ、これらは私のライブラリがスローする例外です。後でサードパーティのライブラリを交換するかもしれませんが、例外が行ったことを行う例外をスローするつもりです. "
これは正しいですか?これを行うより良い方法はありますか?呼び出しコードにサードパーティの例外を認識させる必要がありますか?