ダイコン時代の設計手法 - 例外処理
(http://d.hatena.ne.jp/higayasuo/20040608より)
今のプロジェクトでも検査例外は一切投げていません。
その代わりサービスを呼び出す場所で全ての例外をキャッチしています。
(ちなみにGUIアプリです)
try { Service service = (Service)container.getComponent(Service.class); service.export(item); } catch (Exception e) { log.error(e.getMessage(), e); // エラーダイアログを表示 }
オザッ記で例外のロギングについて話題があがっていましたが、
「例外をキャッチしてすぐロギング」という方針でやっています。
呼び出し元で2重にエラーがロギングされても、さほど問題はないと思います。
例外のログが残らないのが一番怖いんで・・・
try { // IOExceptionが発生する場所 } catch (IOException e){ log.error(e.getMessage(), e); throw new IORuntimeException(e); }