コンストラクターで例外をスローする静的メンバーを含むライブラリのdlopen-結果として中止
-
03-07-2019 - |
質問
dlopen関数を使用して動的ライブラリをロードしようとしています。このライブラリには、コンストラクターで例外をスローする静的オブジェクトが含まれています。 " try-catch(...)"がありますdlopen呼び出しをブロックしますが、例外はキャッチされず、「中止」が表示されます。
この例外をどのようにキャッチできますか?
解決
簡単な回答:できません
もう一度考えます。
元のステートメントは保持されますが、dlopen()はCライブラリ関数であることも覚えておく必要があります。 Cは例外をサポートしていません。したがって、C ++コードからC(dlopen()に戻るグローバルオブジェクト)コードに交差する例外をスローすると、アプリケーションが終了します。
こちらをご覧ください:例外時にデストラクタが呼び出されない理由
これらは、例外をスローするとアプリケーションが終了する状況です。あなたの特定の状況は以下によってカバーされます:
例外は、非ローカルスタティック(グローバル)のコンストラクタ/デストラクタをエスケープします
所属していません StackOverflow