読者です 読者をやめる 読者になる 読者になる

Challenge Java EE !

Java EEを中心に趣味や仕事における開発メモを書いています。

マルチキャッチを初めて使ってみました

Java 言語仕様

昨年のJava EE6プロトタイプ開発でもコーディングはしていましたが、本開発に入ってから、より真面目(!?)にコーディングしていくと、何かと発見があったりします。

昨日のエントリでも少し触れましたが、今の開発では自社の米パートナーが提供するJNIライブラリを利用します。
で、そのライブラリのAPIを呼ぶと、例えば以下のように、ライブラリ側で定義された独自例外のキャッチがずらずらと並びます。

※ログの出力処理はNetBeans自動生成によるもので、当然変更予定です(^^;

//JNIConfigMgrという型はライブラリで定義された型
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);
}

すっきり!

…だけど、怒られた(>_<)

f:id:kikutaro777:20130206200412j:plain

multi-catch statement is not supported in -source 1.5
(use -source 7 or higher to enable multi-catch statement)

む、このメッセージは見たことがある。

というわけで、プロジェクトを右クリックしてプロパティを選択し、ソースを選択すると…

f:id:kikutaro777:20130206200509j:plain

やはり1.5になっています。
ここを1.7にすると、ちゃんとエラーが消えます。
新規にプロジェクトを作成したときはちょっと気を付けないといけないですね。

ちなみに1.7にした状態で、元々のコードを書いていると、以下のように「マルチキャッチに置換可能」ってヒントが出てきました!

f:id:kikutaro777:20130206200620j:plain

クリックすると、ちゃんと整形してくれます。NetBeansグッジョブ!

ちなみに利用しているNetBeansのバージョンは7.2.1です(^^)

にほんブログ村 IT技術ブログへ
にほんブログ村
にほんブログ村 IT技術ブログ Javaへ
にほんブログ村