C++ ですべての例外をキャッチする 質問する

C++ ですべての例外をキャッチする 質問する

Javaに相当するC++はありますか?

try {
    ...
}
catch (Throwable t) {
    ...
}

ネイティブ Windows 関数を呼び出す Java/jni コードをデバッグしようとしていますが、仮想マシンがクラッシュし続けます。ネイティブ コードはユニット テストでは正常に表示され、jni 経由で呼び出された場合のみクラッシュするようです。汎用的な例外キャッチ メカニズムは非常に便利です。

ベストアンサー1

try{
    // ...
} catch (...) {
    // ...
}

はすべてのC++例外をキャッチしますが、これは悪い設計であると考えられます。C++11の新しいstd::現在の例外メカニズムはありますが、C++11 を使用できない場合 (書き直しが必要なレガシー コード システム)、メッセージや名前を取得するために使用する名前付き例外ポインタがありません。キャッチできるさまざまな例外に対して個別の catch 句を追加し、予期しない例外を記録するために下部にあるものだけをキャッチすることをお勧めします。例:

try{
    // ...
} catch (const std::exception& ex) {
    // ...
} catch (const std::string& ex) {
    // ...
} catch (...) {
    // ...
}

おすすめ記事