日記かな、自分のサーバ作りの?(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がクローズになる。 } }