Java SE7 Gold 取得を目指して (9)
Java SE7 Gold をとりたい…!
本日は第9回目です。
Java7でいろいろと変更のあった例外についての章でした。
今日のこぼれ話
いろいろなプログラミング言語を操る人々を「言語+er」で読んだりしますよね。Javaer、PHPerとか。
Javaerとか字面はかっこいいんですけど、声に出すと今ひとつだなーと思っていたのですが、Javaristaなんてのがあるらしいです。
Baristaとかけているらしくかっこいいので使おうかな…? まだまだちょっと気恥ずかしいですね。
本日知ったこと(7章)
-
try-catch
- ↓はコンパイルエラー(ただ派生クラス側が処理されないだけだと思っていた)
public void excec() { try { someMethod(); } catch (Exception e) { // 親例外クラスが先 } catch (NullPointerException e) { // 派生例外クラスが後 } }
- Java7より↓のコンパイルが通る(6以前ではコンパイルエラー)
public void excec() throws MyException1, MyException2 { try { if (!check1()) { throw new MyException1(); } if (!check2()) { throw new MyException2(); } } catch (Exception e) { e.printStackTrace(); throw e } }
- Java7より派生関係のない例外を
|
で区切ってマルチキャッチが可能
catch(IOException | SQLException e) { e.printStackTrace(); // e は final になる }
-
try-with-resources
- Java7より
- 複数リソースは
;
区切り - リソースクラスはClosableまたはAutoClosableを実装する
- 例外発生 → close() → catch節 → finally節 の順で呼ばれる
- 複数リソースを取得していた場合、取得順とは逆に
close()
が呼ばれていく
try (MyResource1 res1 = new MyResource1(); MyResource2 res2 = new MyResource2()) { someMethod(); // res2.close() // res1.close() } catch (Exception e) { }
- try-with-resource内とcloseの両方で例外が発生した場合closeでの例外は抑制される
- 取得したければ
e.getSuppressed()
-
アサーション
- アサーション有効化は
java -ea XXXX
- プログラム中のバグを発見する機能なのでコード上からハンドリングできないようになっている
- アサーション有効化は
try-with-resources、これでやっとファイルの読み書きだけでtry-catchを2度も書くようなコードとはおさらば出来るんですね…!
Author And Source
この問題について(Java SE7 Gold 取得を目指して (9)), 我々は、より多くの情報をここで見つけました https://qiita.com/tomoki1207/items/e45fc9d71a0e5909f666著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .