例外処理

こんなソースがあった。

public void hogehoge(Fuga fuga)
throws SQLException, Exception, IOException{
  //...
}

取り敢えずthrows Exceptionを消して他の具体的な例外に書き直し。するとコレを受けたソースでcatch句で、スローされない例外をcatchしているというエラー。Exceptionを投げてしまうと、受ける方は? extends Exceptionなら何でも書いてもいいらしい。

  • publicメソッドはExceptionをスローしない方がよさそう。
    • privateメソッドだったり、catch句だけで使うのはまだいいかもしれないが…。極力避けた方が無難そう。catch Exceptionは最上位で、というような例外処理の階層化かな。
  • javaの経験が数年あるといっても、気付かない人の方が多い。
    • それを「彼ならjavaは大丈夫」と言ってしまう方も危ない。
    • バグを出さないのも大事だが、バグを潰しやすくする方がもっと大事な気はする。自分が作ったソースは、作った次の瞬間に過去のソースとなる。