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

时间:2017-08-29 16:10:17

标签: java exception-handling

强化正在抱怨以下代码:

protected void doStuff() throws Exception{
    try (CSVReader csvReader = new CSVReader(new FileReader(file))) {
        ...
        String[] read;
        read = csvReader.readNext();
        ...
    }
}

在FileReader抛出异常的情况下。我是java的新手,我不清楚为什么尝试使用资源块不能处理这种情况。如何处理?

1 个答案:

答案 0 :(得分:0)

首先关闭较低级别的读取器实例然后关闭包装器级别实例以避免内存泄漏始终是一个好主意。

  

首先关闭fileReader的实例,然后关闭实例   CSVReader。

  componentDidMount() {
  return fetch('http://10.42.0.1:8000/stocks/',
  {
    method: "GET",
    headers: {
      'Authorization': `JWT ${"eyJhbGciOiIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InNhbSIsInVzZXJfaWQiOjYxLCJlbWFpbCI6IiIsImV4cCI6MTUwNDAxNTg4M30.o_NjgPNsxnLU6erGj5Tonap3FQFxN3Hh_SsU6IvLO9k"}`
  }
})

  .then((response) => response.json())
  .then((responseData) => {
    console.log(responseData.detail);
    let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
    this.setState({
      isLoading: false,
      sa: ds.cloneWithRows(responseData.post),

    }, function() {

    });
  })
  .catch((error) => {
    console.error(error);
  });
}
相关问题