如何在异常
问题描述:
设防抱怨下面的代码的情况下,正确关闭资源流:如何在异常
protected void doStuff() throws Exception{
try (CSVReader csvReader = new CSVReader(new FileReader(file))) {
...
String[] read;
read = csvReader.readNext();
...
}
}
在的FileReader抛出一个异常的情况下
。即时通讯新的Java,它不清楚为什么与资源块尝试不处理案件。如何处理这个?
答
首先关闭较低级别的reader实例并关闭包装级别实例以避免内存泄漏总是一个好主意。
因此先关闭fileReader的实例,然后关闭CSVReader的实例 。
FileReader fileReader= new FileReader(file)
CSVReader csvReader = new CSVReader(fileReader)
....
...
fileReader.close();
csvReader.close();
它的确如此。 Fortify只是错误的(除非CSVReader在关闭时没有关闭它的wrapper,这会令人惊讶)。 –
@JBNizet或在构建'CSVReader'期间抛出异常。 –
'fortify'可能太老了,无法理解*尝试使用资源* - 不熟悉它。 Java-6中的构造将会失败。 – OldCurmudgeon