私が理解しているように、Java 7 の例外抑制機能は自動機能です。つまり、6 の finally ブロックであったもので発生した例外は、リソース割り当て時に発生した例外を優先して自動的に抑制されます。
そのため、この例では、a) リソースを開き、b) リソースを閉じるか、c) 両方で問題が発生する可能性があります。
私が理解しているように、Java 7 は、開いたときに発生した例外をスローします。他の場所で発生した抑制された例外を提供するように依頼できます。
try (BufferedReader inputReader = Files
.newBufferedReader(Paths.get(new URI(
"file:///Users/me/Desktop/readme.txt")), Charset
.defaultCharset())) {
String inputLine;
while ((inputLine = inputReader.readLine()) != null) {
System.out.println(inputLine);
}
}
問題は.. プログラマーは何が抑制されるかを決めることができるか? やっぱり、public addSuppressed()
あります。
例とユースケースを提供してください。