例外処理

最近アンテナを巡回してたら,同時多発的に例外処理ネタがありました.自分も以前(数ヶ月前?)会社で,例外処理の基本,みたいなレポートを書いていたので,結構親近感がありました.


自分が思うに,ポイントは

  • なるべく例外は発生させない(事前チェックを行う)
  • むやみにcatchしない
  • (例外)情報を劣化させない
  • 極力一箇所でcatchし,エンドユーザに対しては穏やかなメッセージを画面表示,オペレータ・開発者にはスタックトレースを含む詳細情報をログ出力する

って感じじゃないかと.言い換えると,

  • メソッドがtry〜catchで見通しが悪くなるようだったら何かが間違っている.本来例外処理は処理の見通しをよくするための機構なのだから

ってことなんじゃないかなぁ?


たぶん,Javaの検査例外が混乱を招いたんだと思います.別に悪い言語仕様ではないと思うんだけど,VB/C/Cobol開発者からの転身組がそれぞれの流儀で短納期でシステム構築していく中で混乱に拍車がかかった,ってことなんじゃないかなぁ?
(もちろん,それぞれの言語に罪があるわけではないし,結局のところ開発者の質の問題になるのだろうけど).