チェックされた例外は、クラスRuntimeExceptionとそのサブクラスを除く、Exceptionのサブクラス(またはException自体)です。
例外をチェックすると、クライアントプログラマーは例外がスローされる可能性に対処する必要があります。たとえば、java.io.FileInputStreamのread()メソッドによってスローされるIOException
チェックされていない例外は、RuntimeExceptionとそのサブクラスのいずれかです。クラスエラーとそのサブクラスもオフになっています。
ただし、チェックされていない例外がある場合、コンパイラーはクライアント・プログラマーに例外をキャッチするか、throws節で宣言するように強制しません。実際、クライアントプログラマーは、例外がスローされる可能性があることさえ知らない場合があります。たとえば、StringのcharAt()メソッドによってスローされるStringIndexOutOfBoundsException。
チェックされた例外は、コンパイル時にキャッチする必要があります。ランタイム例外はである必要はありません。エラーは回復不能になる傾向があるため、多くの場合、エラーは発生しません。