昨年のJava EE6プロトタイプ開発でもコーディングはしていましたが、本開発に入ってから、より真面目(!?)にコーディングしていくと、何かと発見があったりします。
昨日のエントリでも少し触れましたが、今の開発では自社の米パートナーが提供するJNIライブラリを利用します。
で、そのライブラリのAPIを呼ぶと、例えば以下のように、ライブラリ側で定義された独自例外のキャッチがずらずらと並びます。
※ログの出力処理はNetBeans自動生成によるもので、当然変更予定です(^^;
JNIConfigMgr configMng = new JNIConfigMgr();
try {
config = configMng.CreateConfiguration("C:\\temp", "TEST.zip");
} catch (OpenDatabaseException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
} catch (MetaDataException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
} catch (JCFGException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
}
なんかこういうの綺麗に書ける、ってどこかで聞いた……と思い出しました。
昨年のJJUG CCC 2012 FallでProject Coinの話を聞いたときだー、と。
資料は以下に公開されていました。25ページ以降ですね。
今さら Coin、されど Coin
こういうイベントはホント参加しておくべきですね(^^;聞いてなかったら意識しなかったです多分。
ということで、そんな風に書いてみると
try {
config = configMng.CreateConfiguration("C:\\temp", "TEST.zip");
} catch (OpenDatabaseException | MetaDataException | JCFGException ex){
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
}
すっきり!
…だけど、怒られた(>_<)

multi-catch statement is not supported in -source 1.5
(use -source 7 or higher to enable multi-catch statement)
む、このメッセージは見たことがある。
というわけで、プロジェクトを右クリックしてプロパティを選択し、ソースを選択すると…

やはり1.5になっています。
ここを1.7にすると、ちゃんとエラーが消えます。
新規にプロジェクトを作成したときはちょっと気を付けないといけないですね。
ちなみに1.7にした状態で、元々のコードを書いていると、以下のように「マルチキャッチに置換可能」ってヒントが出てきました!

クリックすると、ちゃんと整形してくれます。NetBeansグッジョブ!
ちなみに利用しているNetBeansのバージョンは7.2.1です(^^)