Java Platform, Standard Editionトラブルシューティング・ガイド
目次      

7.4 Java HotSpot VMによる例外処理

HotSpot VMでは、SetUnhandledExceptionFilter API(32ビット・システムの場合)またはAddVectoredExceptionHandler API(64ビット・システムの場合)を使用して、初期化中に最上位の例外ハンドラをインストールします。

また、作成される各スレッドのスレッド(内部)起動関数呼出しの周囲に、C++の__try /__exceptブロックを使用してwin32 SEHをインストールします。

最後に、JNI関数の周囲に例外ハンドラをインストールします。

アプリケーションでJNIコード内の構造化例外を処理する必要がある場合は、C++の__try /__except文を使用できます。ただし、JNIコード内でベクトル化例外ハンドラを使用する必要がある場合、そのハンドラはVMの例外ハンドラに進むためにEXCEPTION_CONTINUE_SEARCHを返す必要があります。

一般に、例外が発生する状況には2つのカテゴリがあります。

  • 例外が予想され、処理されるとき。例として、前述の(NULLへのアクセスによってEXCEPTION_ACCESS_VIOLATIONが発生し、処理される)暗黙的なNULL処理があります。

  • 予想外の例外。例として、VMコード、JNIコード、またはネイティブ・コード内で実行されているときのEXCEPTION_ACCESS_VIOLATIONがあります。これらの場合、このシグナルは予想されていないため、エラー・ログを作成してプロセスを終了するために致命的エラー処理が呼び出されます。

目次      

Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.