絶対に実行されない文と例外処理・Javaソースコードの書き方

絶対に実行されない文

例えば「if文・その他の場合」のように、プログラムの仕様上、絶対に処理が来ない場所があります。
もしもプログラム記述ミスなどの理由で、その場所に処理が来た場合、

  • プログラム処理を中止する、
  • プログラム開発者に、プログラム処理が「この場所に来たこと」を伝える

と、良いです。プログラムの不具合を修正する際に、役立つからです。
絶対に処理が来ない場所では、catch文で対処しなくて良い例外――例:RuntimeExceptionクラス――を通知する、と良いです。関連する記事:例外処理の中止

プログラムの仕様上、絶対に処理が来ない場所に処理が来た場合、プログラムが「異常な動作をする可能性」があります。なぜなら、プログラム仕様外の処理手順が実行されているからです。

この場合、処理の続行を中止して、開発者に対して、プログラムが異常な処理手順を実行したことを伝えると良いです。例外を通知すると、ログなどに記録されます。ログによって、プログラム異常が開発者に伝わると思います。

catch文で処理しなくて良い例外

ErrorクラスとRuntimeExceptionクラスは、catch文で処理する必要がない例外クラスです。これら例外の使い分けについて、次のような意見があります。参考に書きます。

  • Errorクラス
    実行環境(JavaVMなど)の内部で発生した致命的なエラーを示します。
    プログラムから明示的に通知することはない、という考え方があります。
  • RuntimeExceptionクラス
    エラー発生の責任がプログラム開発者側にあることを、示します。
    例:プログラムの記述ミス

また、RuntimeExceptionクラスに対しては、次のような考え方もあるそうです。
ある不具合が起きたことを例外で示したが、その例外をキャッチして処理しても、プログラムを頑健にすることに「役立たない感じ」がする。
そんな場合では、プログラムを頑健にするのに役立たないcatch文を、書きたくない。その意志を示す場合に、RuntimeExceptionクラスを利用する。
このような考え方もあるようです。

使い分けせずに、Errorクラスを使用してしまった

エラー以前、自作のJavaソースコードで、絶対に実行されない部分に処理が来た場合、Errorクラスを通知していたことがありました。
その当時、「例外クラスの使い分け」を、あまり意識していなかったからです。Errorのほうが、RuntimeExceptionよりも文字数が短かったから、使っていました。

特に深く考えずにErrorクラスを使っていたので、他のプログラマーに対して「わかりにくいソースコード」になっていた、と思いました。

※この記事は、2004年6月当時の記事になります。

コンピューター
この記事をシェアする

グッズ・メモランダム