OCJ-Pの問題を見ると、選択肢が特徴的ですね。
必ず 「コンパイルエラーが発生する」と、
「実行時に例外がスローされる」が入っています。
それほど大事な例外処理ですが、
私はコンパイルエラーと例外(Exception)の違いが、
なかなか分かりませんでした。
当然、OCJ-Pの問題ではその区別は大事で、
曖昧なまま受験すると痛い目を見ます。
ここ数日の研究でやっと分かってきたので、
コンパイルエラーと実行時例外の区別法を伝授します。
まずは例外の区別を学びましょう。
例外には2種類あります。
1つは、検査例外(チェック例外)。
もう1つは非検査例外(非チェック例外、実行時例外)です。
検査例外とは、実行前から例外の発生が予想される例外。
つまりコンパイル時に例外処理を求められて、
例外処理をしていなければ、コンパイルエラーになる例外です。
非検査例外とは、実際に実行してみないと発生が分からない例外です。
つまりコンパイル時には例外処理をしていなくても、
コンパイルエラーにはなりません。
実行結果として、発生した時点でスローされて、
○○Exceptionがスローされました と知らされるのです。(英語で)
実際にOCJ-Pでも、実務でも遭遇する可能性が高いのは、
2番目の非検査例外です。
非検査例外には、NullPointerExceptionやIndexOutOfBoudsExceptionなど、
OCJ-Pでの出題率が高い例外クラスが含まれます。