Я ожидал, что следующий код вызовет исключение, когда я перейду к записи данных в Stream:
File file = new File("test.txt");
FileOutputStream fs = new FileOutputStream(file);
OutputStreamWriter ow = new OutputStreamWriter(fs);
BufferedWriter writer = new BufferedWriter(ow);
fs.close();
try {
ow.write(65);
writer.write("test");
} catch (Exception e) {
e.printStackTrace();
}
Я понимаю, что мне следует закрыть BufferedWriter, но в моей текущей среде возможно, что FileOutputStream будет закрыт до закрытия BufferedWriter. Разве FileOutputStream не должен генерировать исключение IOException, которое должно перемещаться вверх по цепочке, пока не попадет в мой блок try / catch и не распечатает трассировку стека?
Если я попытаюсь вызвать fs.write (65), он выдаст исключение.