2012年1月12日木曜日

Groovyで色々やってみた 例外処理とクロージャ

Groovyバージョン:1.8.5
Java:1.7.0_02

アイディアを備忘録的に記述しておく。

// 単純な例外処理用
def doMethod(Closure bound){
     try{
     // 例外を発生させる処理
         methodX()
     }
     catch(Exception e){
         bound.call(e)
     }
}

doMethod(){ Exception e ->
    e.printStackTrace()
}

// 複数の例外に対応する場合
// boundsはMap
def doMethod2(Map bounds){
     try{
     // 例外を発生させる処理
         methodX()
     }
     catch(Exception e){
         Closure bound = (Closure)bounds.put(e.getMessage())
         bound.call(e)
     }
}

マップのキーに関しては他のもの(例えば例外の型など)を用いてもうまくいくと思います。
例外を処理する側のクロージャ内のコードになるべく汎用性をもたせるようにすれば、
少ないコードで結構いろんなとこに使い回しが出来るかもしれません。
ただ、このアイディア(特に複数の例外に対応する方)は、
メソッドの中身を知らないとどうにもならない気がするなぁ・・・

警告:一応、コードに関しては動作確認はしておりますが、
プログラムの動作に関しての安全の保証はできかねます。
その為、このページのコードを利用する場合に
何が起きたとしても自己責任ということになります。
十分に注意してください。

閑話休題

風邪がひどいのでなかなかブログの更新ができない・・・
咳が時々止まらなくなって辛い。