検査例外と非検査例外を判別するためのルールは、Javaのクラス継承ツリーに基づいています。
java.lang.Throwable -> java.lang.Exception の階層において、RuntimeException の配下に存在するすべての例外クラスが「非検査例外」となります。
それ以外の Exception の直下クラス(および IOException, ParseException 等)はすべて「検査例外」となります。
また、java.lang.Error とそのサブクラスもコンパイル時チェックを受けないため非検査扱いです。
検査例外を発生させる可能性のあるメソッドを呼び出す場合、呼び出し側は「1. 自身を try-catch で囲んで処理する」か、「2. 自身のメソッド宣言に throws 例外名 を付けて上位へたらい回しにする」かの二者択一を必ず選択しなければなりません。
試験でのポイント