5

dlopen 関数を使用して動的ライブラリをロードしようとしています。このライブラリには、コンストラクターで例外をスローする静的オブジェクトが含まれています。dlopen 呼び出しの周りに「try-catch(...)」ブロックがありますが、例外がキャッチされず、「Abort」が表示されるだけです。

この例外をキャッチするにはどうすればよいですか?

4

1 に答える 1

6

短い答え:あなたはできません

もう一度考えてみてください。
元のステートメントは成り立ちますが、dlopen()はCライブラリ関数であることも覚えておく必要があります。Cは例外をサポートしていません。したがって、C ++コードからC(グローバルオブジェクトをdlopen()に戻す)コードに交差する例外をスローすると、アプリケーションも終了します。

ここを参照してください:デストラクタが例外で呼び出されないのはなぜですか?

これらは、例外をスローするとアプリケーションが終了する状況です。あなたの特定の状況は以下によってカバーされます:

例外は、非ローカル静的(つまりグローバル)のコンストラクタ/デストラクタをエスケープします

于 2009-01-05T15:48:56.640 に答える