Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在异常情况下正确关闭资源流_Java_Exception Handling - Fatal编程技术网

Java 如何在异常情况下正确关闭资源流

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新

fortify正在抱怨以下代码:

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();