Java 如何在异常情况下正确关闭资源流
fortify正在抱怨以下代码:Java 如何在异常情况下正确关闭资源流,java,exception-handling,Java,Exception Handling,fortify正在抱怨以下代码: protected void doStuff() throws Exception{ try (CSVReader csvReader = new CSVReader(new FileReader(file))) { ... String[] read; read = csvReader.readNext(); ... } } 在FileReader引发异常的情况下。我是java新
protected void doStuff() throws Exception{
try (CSVReader csvReader = new CSVReader(new FileReader(file))) {
...
String[] read;
read = csvReader.readNext();
...
}
}
在FileReader引发异常的情况下。我是java新手,我不清楚为什么try with resources块不能处理这个问题。如何处理此问题?最好先关闭较低级别的读卡器实例,然后关闭包装器级别的实例,以避免内存泄漏 所以首先关闭fileReader的实例,然后关闭fileReader的实例 CSVReader
是的。Fortify是错误的(除非CSVReader在关闭读卡器时没有关闭它所包装的读卡器,这将是令人惊讶的)。@JBNizet或者如果在构建
CSVReader
Fortify
的过程中抛出异常,可能太老了,无法理解try with resources-不熟悉它。Java-6中的这种构造将是失败的。你抱怨是什么意思?如果您遇到语法错误,那么您的编译器可能与JavaSE1.7不兼容。看看这个答案:
FileReader fileReader= new FileReader(file)
CSVReader csvReader = new CSVReader(fileReader)
....
...
fileReader.close();
csvReader.close();