Javaのメソッド内の処理の失敗を上位に伝える方法として、以下がある。
- 例外で伝える
- 戻り値で伝える
C言語出身の自分としては、まず「戻り値で伝える」から入ったが、Javaのような例外処理機構を持った言語では例外を使って使っていった方が良いのではないかと思う。その理由は以下の通り。
- 例外オブジェクトに失敗時の情報を込めることができる。具体的には、例外オブジェクトの型や例外オブジェクト内のメッセージにより、失敗時の情報を上位に伝えることができる。一方で、戻り値の場合はそれができない。戻り値が 0,1 以外の値も取るようにして、それぞれに意味を与えておけばできなくはないが、Javaでは普通そこまではやらないでしょう。
- 処理結果を受け取る上位のメソッド側のコードが、正常系のものと異常系(例外を受け取った時の処理)で分けられるため、コードが見やすくなる。コードの見やすさは、特に保守フェーズに入ると重要なものとなる。
例外を使う場合、受け取る側では try~catch 節が必要になりちょっと面倒だったり、例外は所謂 goto 文なので、人によっては処理の流れが追いにくくなるのかもしれないが、基本的には例外を使っていった方が良いコードになると考えている。