日記かな、自分のサーバ作りの?(01、try…catch…の問題)

今日まだ終わらないうちに、昼間から出会ったbugについて、取りまとめましょう。
一応try…catch…にかかわる問題かな…

try(do something){

}catch{

}

と

try(){
  do something;
}catch{

}
の区別。
直接結論から言います:
一般的にCatchの中にリソースの解放は行いません。正常終了の場合、リソースの解放をする必要があるが、そこに書こうとしても、書き忘れる可能性があります。
そのため、Finallyにかくのが妥当だと思われる。
実は、try-with-resources(try(..do something..)のこと)と使っても、効果が同じです。処理が終了すると、自動的リソースをクローズし、解放するのです。

// finally句を用いる例
Socket so = null;
 
try (OutputStream out = so.getOutPutStream){
    out.write(new String("moromoro...."));
} catch (Exception e) {
    // 何かの例外対処処理
} finally {
    // ここなにも書かなくても、outがクローズになる。
    }
}

猜你喜欢

转载自www.cnblogs.com/zwk-It-goodmorning/p/11105424.html