dlopen 関数を使用して動的ライブラリをロードしようとしています。このライブラリには、コンストラクターで例外をスローする静的オブジェクトが含まれています。dlopen 呼び出しの周りに「try-catch(...)」ブロックがありますが、例外がキャッチされず、「Abort」が表示されるだけです。
この例外をキャッチするにはどうすればよいですか?
dlopen 関数を使用して動的ライブラリをロードしようとしています。このライブラリには、コンストラクターで例外をスローする静的オブジェクトが含まれています。dlopen 呼び出しの周りに「try-catch(...)」ブロックがありますが、例外がキャッチされず、「Abort」が表示されるだけです。
この例外をキャッチするにはどうすればよいですか?
短い答え:あなたはできません
もう一度考えてみてください。
元のステートメントは成り立ちますが、dlopen()はCライブラリ関数であることも覚えておく必要があります。Cは例外をサポートしていません。したがって、C ++コードからC(グローバルオブジェクトをdlopen()に戻す)コードに交差する例外をスローすると、アプリケーションも終了します。
ここを参照してください:デストラクタが例外で呼び出されないのはなぜですか?
これらは、例外をスローするとアプリケーションが終了する状況です。あなたの特定の状況は以下によってカバーされます:
例外は、非ローカル静的(つまりグローバル)のコンストラクタ/デストラクタをエスケープします