クラスが自動的にインスタンス(オブジェクト)を生成します。これを例外、または例外オブジェクトといいます。例外クラス例外クラスは、すべてjava.langパッケージ内のThrowableクラスを継承しています。自動的に生成されます。例外オブジェクトをが自動的に生成されることを「スローする」「投げる」などと言います。プログラムは、投げられた例外オブジェクトをキャッチして例外の内容を確認し、例外オブジェクトを無効化することで処理を続行することができるようになります。キャッチしないとプログラムの実行はそこで中断してしまいます。例外のクラスは、さらにErrorクラスを継承するクラスと、Exceptionクラスを継承クラスに大別することができます。Errorクラスを継承するクラスは、プログラムの実行に致命的な障害が発生した場合に生成される例外で、JVM(Java仮想マシン)で検出されるエラーです。メモリ不足やスタックオーバーフローの場合などにこのエラーになります。Exceptionクラスのサブクラスは、主にプログラム時のバグによって発生する例外です。ArrayIndexOutBoundsExceptionは配列のインデックス番号が範囲外である場合に発生する例外です。Exceptionクラスのサブクラスで、RuntimeExceptionクラスやそのサブクラスを除くものは、プログラミングによって回避できないエラー発生が生じた場合に発生します。実行時にファイルが存在しない場合や、ネットワーク上でデータが送信できない場合などです。Throwableクラスは、すべての例外クラスのスーパークラスです。チェック例外と非チェック例外チェック例外は、ソースファイルをjavacコマンドによってコンパイルする際、例外処理がなされているかどうか必ずチェックされる例外です。例外処理がなされていない場合は、コンパイルエラーとなります。非チェック例外は、コンパイル時にはそのようなチェックはされません。Errorクラスとそのサブクラス(非チェック例外)このクラスは、システム関係の回復不可能なエラーが生じた場合に発生する(生成される)クラスです。スタック領域の不足これらのエラーは、通常Javaのプログラムでは回復することができません。非チェック例外となっていて、コンパイル時にはこれらの例外に対する例外処理が記述されているかどうかはチェックされません。場合に発生する例外です。コンパイルエラーにはなりません。(チェック例外)コンパイル時に例外処理がなされているかどうかをチェックする例外クラスです。例外が記述されていない場合は、コンパイルエラーとなります。java.langパッケージに属するため、クラス名だけの記述で用いることができます。