C でのすべての例外のキャッチ
JNI を使用する Java プログラムがネイティブ Windows 関数を呼び出すと、仮想マシンがクラッシュすることが確認されています。この問題を調査する際には、汎用の例外キャッチ メカニズムが非常に有益です。 C では、すべての例外をキャッチするための簡潔なソリューションも実装できます。
C 例外キャッチ メカニズム
すべての C 例外をキャプチャするには、次のコード スニペットを使用できます。 :
<code class="cpp">try { // ... } catch (...) { // ... }</code>
このアプローチはすべての例外を処理しますが、一般にコーディング方法が不適切であると考えられています。
代替アプローチ
C 11 では、 std::current_Exception メカニズム。現在の例外にアクセスできるようになります。ただし、C 11 を使用できない場合は、メッセージまたは名前を含む名前付き例外ポインターがありません。したがって、特定の例外を個別に処理し、予期しない例外を記録する場合にのみ catch-all 句を使用することをお勧めします。このアプローチの例は次のとおりです。
<code class="cpp">try { // ... } catch (const std::exception& ex) { // ... } catch (const std::string& ex) { // ... } catch (...) { // ... }</code>
これらの手法を採用すると、C で例外を効果的に処理し、コードの安定性を確保できます。
以上が堅牢なエラー処理のために C ですべての例外をキャッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。