\r\n\r\n
例外チェックと実行時例外の比較
例外は、プログラムの正常な流れを妨げる特別なタイプのイベントです。例外という名前は、「例外イベント」に由来しています。例外の発生は、例外オブジェクトを生成し、ランタイムシステムに渡す処理である。ランタイムシステムは例外オブジェクトを受け取ると、コールスタックを逆順(メソッドが呼ばれた順)に走査して、それを処理する人を探そうとする。ランタイムシステムが例外ハンドラを持つメソッドを発見した場合、ランタイムシステムは成功する。例外ハンドラは、当該例外を正式に処理できるコードのブロックである。ランタイムシステムが適切なハンドラを見つけた場合、例外オブジェクトをハンドラに渡します。これを例外をキャッチするといいます。ただし、例外を処理できない場合は、プログラムが終了します。Javaでは、例外はThrowableクラスから継承されます。チェック例外とは、コンパイラが強制的に処理させる例外のことです。ランタイム例外は、コンパイラがチェックしない例外の一種である。
チェック異常とは何ですか?
選択された例外は、クラス java.lang.exception およびそのサブクラス(java.lang.RuntimeException およびそのサブクラスを除く)のオブジェクトの一つである。チェックされた例外は、コンパイル時に「チェック」される。つまり、プログラマはこれらの例外をキャッチするかスローしなければならず、さもなければコンパイラが文句を言う(コンパイラエラーになる)のです。このため、チェックされる例外の多くは、プログラマにとって非常に馴染み深いものである。例えば、IOExceptionとそのサブクラスはチェックされた例外であり、プログラマがファイルへのアクセスや修正を処理するときは常に、コンパイラが起こりうるすべてのIOExceptionsを処理することを確認する。
実行時例外とは何ですか?
RuntimeExceptionには、java.lang.理論的には検査済例外と同じ目的を持ち、検査済例外のようにスローしたり、処理したりすることができますが、コンパイラはその処理を強制することはありません。NullPointerException、NumberFormatException、ClassCastException、ArrayIndexOutOfBoundsExceptionはJavaでよくある実行時例外です。
チェック例外と実行時例外の違いは何ですか?
チェック例外と実行時例外はどちらもプログラム実行中に不要となるものですが、両者には違いがあります。チェックされた例外処理はコンパイラによって強制されるが、実行時例外処理は強制されない。このように、チェックされた例外は、コードをコンパイルするためにスローまたは処理されなければならないが、実行時例外にはそのような要件はない。したがって、実行時例外はエラーと並んで未チェックの例外のカテゴリに属します。