2

DLL を介してエクスポートされるクラスを含むライブラリを開発しているとします (Windows、または Linux ELF 共有ライブラリのような同様の共有ライブラリ)。これらのクラスのメンバー関数は、標準ライブラリまたはライブラリ定義の例外から例外をスローします。

DLL のアドレス空間をマップするモジュールに例外をスローするように DLL でコーディングすることは完全に安全ですか? クライアント モジュールに例外がスローされる共有ライブラリでソフトウェア コンポーネントを開発する場合、どのような考慮事項がありますか?

どうもありがとうございました。

4

2 に答える 2

2

ライブラリの境界を越えてスローされた例外が正常に機能することを期待することは完全に合理的であることに同意します。ただし、いくつかの不具合が発生しても、あまり驚かないでください。「gcc 共有オブジェクトの例外」を Google で検索すると(グループもチェックしてください)、多くの人が長年にわたって多くの問題を抱えていることがわかります。前回 gcc で試したとき (ca 2003)、うまくいかなかったのであきらめました。うまくいけば、それ以来、状況は改善されています。

于 2008-12-27T20:15:43.217 に答える
1

ライブラリが例外をスローしたり、基礎となるフレームワークから例外が発生するのを許可したりすることは完全に合理的です。ただし、ライブラリのユーザー向けにこの動作を慎重に文書化する必要があります。これにより、コードのコンシューマーが適切なアクションを実行して、コードによってスローされる可能性がある (またはキャッチされない) 例外を処理できるようになります。

于 2008-12-27T20:02:54.193 に答える