IT graph

気になったデバイスやプログラムで楽しくやっていけたら良いなと思っております。

ExceptionとRuntimeExceptionの違い(Java)

いまいちボヤっとしてましたので、調べた範囲でまとめておきます。

Exceptionの特徴

  • 例外発生時にリカバリ処理が想定される(指定されたパス名で示されるファイルが開けなかった等)
  • Try Catchが必要(Catch内でリカバリ処理を行う)
  • コンパイル時にチェックされる

実際に,指定されたパス名で示されるファイルが開けなかった場合は、FileNotFoundExceptionに投げられると
思いますが、このクラスは、以下の様にException-IOExceptionの配下ですね。(RuntimeException配下ではない)

java.lang.Object  
  ┗ java.lang.Throwable  
      ┗java.lang.Exception  
          ┗java.io.IOException  
              ┗java.io.FileNotFoundException  

FileNotFoundException (Connected Device Configuration (CDC), バージョン 1.1.2)

RuntimeExceptionの特徴

  • 例外発生時にリカバリ処理の想定がない(計算の際に0で割った等)

  • Try Catchは必要なし

  • コンパイル時にチェックされない

0で除算した場合は、ArithmeticExceptionに投げられると思いますが、このクラスは以下のようにRuntimeExceptionの配下ですね。

java.lang.Object
  ┗java.lang.Throwable
      ┗java.lang.Exception
          ┗java.lang.RuntimeException
              ┗java.lang.ArithmeticException

ArithmeticException (Connected Device Configuration (CDC), バージョン 1.1.2)

その他補足

  • 全ての例外に対して全部Try Catchしたらコードが分かり辛くてしょうがない

  • ユーザ定義例外についても、リカバリ処理の要否の観点でどちらのサブクラスにするかを決める
     
    今回調査したのは、ユーザ定義例外をどうしようかな。。と思っていたことが発端でした。