質問
今日は問題に遭遇しました。次のコードでは、ランタイム例外がスローされると、後続のコードはまだ実行されますか?例外の後にreturnステートメントを追加する必要がありますか?
public void add(int index、e element){if(size> = elements.length){throw new runtimeException( "注文テーブルがいっぱい、追加できない"); //戻る; //必要ですか? } ....}
この質問に答えるために、私はそれをテストするためにいくつかのコードを書きました、そして、結果は次のとおりです。
// code 1public static void test()をスローする{新しい例外をスロー( "パラメーターアウトアウト境界"); system.out.println( "exception"); //コンピレーションエラー、「アクセスできないステートメント」} // code 2try {新しい例外をスロー( "パラメーターアウトアウト境界"); } catch(Exception e){e.printstacktrace();} system.out.println( "after exception"); //は実行できます//コード3if(true){新しい例外をスロー( "パラメーターアウトアウトアウト境界"); } system.out.println( "exception"); //例外がスローされ、実行されません要約:
例外がコードの前にスローされ、例外がキャッチされない場合、このコードはコンパイル時間エラー「アクセスできないステートメント」を生成します。コード1として
例外がコードの前にスローされ、この例外がtry...catch 、この時点でcatchステートメントに新しい例外がスローされない場合、コードを実行できます。
例外が条件付きステートメントにスローされた場合、プログラムをコンパイルできますが、後続のステートメントは実行されません。コード3として
また、ランタイムの例外と非runtime例外の違いを要約します。
ランタイムの例外は、 RuntimeExceptionクラスとそのサブクラスの例外であり、 NullPointerException 、 IndexOutOfBoundsExceptionなどのチェックされていない例外です。そのような例外はシステムの例外であり、ネットワークの問題などの処理できないためです。
ヌルポインターの例外など、プログラムロジックエラーです。 JVMはこのエラーを修正するために実行を停止する必要があるため、ランタイムの例外を処理せずに処理できます(もちろん、キャッチまたはスローアップすることもできます)、JVMはそれ自体を処理します。 Java Runtime 、プログラムthrowのRuntimeExceptionに自動的にcatch 、スレッドを停止して例外を印刷します。
非回転の例外は、 RuntimeException以外の例外です。これらはすべてExceptionクラスとそのサブクラスに属し、タイプのサブクラスに属し、チェックされた例外です。非回転型の例外は処理(キャッチまたはスローアップ)する必要があり、処理されていない場合、プログラムにはコンパイルエラーがあります。一般的に言えば、 throws APIで記述されたException RuntimeExceptionはありません。
一般的なランタイムの例外:
一般的な非回転数の例外:
さて、上記はこの記事のコンテンツ全体です。この記事の内容が、皆の勉強や仕事に役立つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。