回答編集履歴
1
説明追加
test
CHANGED
@@ -16,9 +16,17 @@
|
|
16
16
|
|
17
17
|
FileReader の後に BufferedReader を生成していますので, BufferedReader の生成に失敗した場合 FileReader の close が必要なのではないか, とのご指摘は, その通りだと思います.
|
18
18
|
|
19
|
-
です
|
19
|
+
ですが, 完璧を期そうとすると finally 内に close のために幾重も if 文が重なることになり, 記述方法に因っては, 例えばサンプル程度のコードでも大半が close の部分だったりと成りえます.
|
20
20
|
|
21
|
+
ですので, 生成は成功する前提で, アクセス中に異常があっても close は行うというカタチにしているのではないでしょうか.
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
とは言え, もちろん仕事としてこのような箇所があった場合は, どんなに巨大な見難い finally でも必要なら書かざるを得ません.
|
26
|
+
|
27
|
+
そのような状況からか, 最近は try が拡張され,
|
28
|
+
|
21
|
-
```
|
29
|
+
```
|
22
30
|
|
23
31
|
try(FileReader parent = new FileReader("abc.txt");
|
24
32
|
|
@@ -33,3 +41,17 @@
|
|
33
41
|
|
34
42
|
|
35
43
|
[try-with-resources文の基本](https://qiita.com/Takmiy/items/a0f65c58b407dbc0ca99)
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
それでも
|
48
|
+
|
49
|
+
```
|
50
|
+
|
51
|
+
try(BufferedReader in = new BufferedReader(new FileReader("abc.txt"));){
|
52
|
+
|
53
|
+
}
|
54
|
+
|
55
|
+
```
|
56
|
+
|
57
|
+
としてしまうとやはり FileReader は close されませんので, 分けて書くようにしましょう... ということになっているようです.
|