Javaにおける例外(Exception)の扱い方について

例外クラスの階層構造

例外クラスの階層構造

Throwable

Throwableクラスはすべてのエラー、例外のスーパークラスです。通常、Throwableクラスをプログラム内で直接記述することはありません。

Error

Errorクラスは、本来アプリケーションで発生してはならない重大なエラーを表現するクラスです。プログラム内で拡張したり、サブクラスを定義することはありません。

主なサブクラス

  • OutOfMemoryError
  • NoClassDefFoundError

Exception

Exceptionクラスは、アプリケーションの一般的な例外的状況を表現します。Exceptionクラスをそのまま使用することはなく、例外の状況に応じて適切なサブクラスを使用します。Exceptionクラスを継承し、独自の例外を作成する場合もあります。

主なサブクラス

  • ClassNotFoundException
  • FileNotFoundException
  • CloneNotSupportedException
  • DataFormatException

RuntimeExcption

RuntimeExceptionはExceptionのサブクラスですが、一般的にはコンパイルエラーとして検出しきれないプログラムのコーディングミスに伴い、実行時にスローされる例外クラスです。状況に応じてRuntimeExceptionを継承し、独自の例外を作成することがあります。

主なサブクラス

  • ClassCastException
  • IllegalArgumentException
  • NullPointerException
  • IndexOutOfBoundsException

Throwableはアプリケーションとしてスローされることも、明示的にスローすることもありません。またErrorは明示的にスローすることはなく、スローされたとしてもキャッチすべきではありません。

したがって、次ページ以降では、プログラマが設計上考慮する必要のある例外としてExceptionクラスとRuntimeExceptionに焦点を絞って考察していきます。