So-net無料ブログ作成
検索選択

【Java】 例外は難しい ②

さて、前回でほぼ例外の仕様面は分かったような気になる訳ですが、
Error以外にもコンパイラの検査を免れる奴が居るらしいですぞ。

> 尚、Errorと『RuntimeException』およびそれらのサブクラス以外は
> コンパイラにより例外チェック機構が走り、

そう、RuntimeExceptionとそのサブクラスも検査を免れるのです!
なんということでしょう!!

なぜRuntimeExceptionは検査を免れるのだろうか?

プログラマには発生しないことが確信できるのに、
いちいち処置を強制させるのはお互いの得にならない…ということのようだ。
(この辺英語が難しくてちょっと良く分からないけど。。。)

例えばNullPointerExceptionならNullチェックをしておけば発生しないし、
NumberFormatExceptionなら数値の範囲チェックをすれば発生しない。

まぁそれはそれとして、そもそもRuntimeExceptionとは何なのだろうか?
直訳すると実行時例外となる訳ですが、実行時に発生する…ってことならほぼ全部そうだよなと(笑)
RuntimeExceptionの説明を見てもExceptionと違ってチェックされませんよ位のものである。
うーむ、解せぬ!

なぜRuntimeExceptionという名前を付けたのだろうか?
名前をつけるならUncheckedExceptionではないのか?
もっと言うとThrowableの直下に置くべきではないのか?

といった疑問が沸く訳ですが、この疑問、晴れる事は無さそうです。

単純に事前の入力値チェック等で充分に回避可能であればRuntimeExceptionのサブクラスにすることで
コンパイラの検査を回避出来ますよ、煩わしくないでしょ?
…的なものであって深い意味は無さそうである。
Exceptionのサブクラスであるところからして後付け感も感じる訳でして。。。



【参考】
https://docs.oracle.com/javase/jp/8/docs/api/
https://docs.oracle.com/javase/specs/jls/se8/html/jls-11.html
コメント(0) 
共通テーマ:資格・学び

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。