gpt4 book ai didi

java - 我们应该在关闭缓冲流时忽略 IOException 吗?

转载 作者:搜寻专家 更新时间:2023-11-01 03:21:25 27 4
gpt4 key购买 nike

我加载一个xml内容,并将它保存到磁盘。然后我阅读它,并尝试解析。当我成功解析 xml 时,是否应该忽略第 7 行的 IOException?

 catch (IOException ignore) {}

还是出现了一些问题?

private HashMap <String, VideoDto> loadContent(String url){
try {
BufferedInputStream bStream = httpGateway.loadContents();
cachedContent = xmlParser.parseVideos(bStream);
try {
bStream.close();
} catch (IOException ignore) {}
return cachedContent;
} catch (XMLStreamException e) {
throw new IllegalStateException("I/O error during integration", e);
}
}


public BufferedInputStream loadContents() {
URL source = config.getContentPath();
URL target= config.getLastImportedFile();
try {
ReadableByteChannel rbc = Channels.newChannel(source.openStream());
FileOutputStream fos = new FileOutputStream(target.getFile());
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
} catch (MalformedURLException e) {
throw new IllegalArgumentException("Wrong url format", e);
} catch (IOException e) {
throw new IllegalArgumentException("I/O error while saving "+target, e);
}

return createBufferStream(config.getLastImportedFile());
}

private BufferedInputStream createBufferStream(URL url){
try {
return new BufferedInputStream(url.openConnection().getInputStream());
} catch (IOException e) {
throw new IllegalArgumentException(e);
}
}

最佳答案

这个问题分为三个部分:

问题 1:是否应该忽略(压缩)异常?

我认为答案是……“视情况而定”。

如果异常原因是已知的并且你可以准确地捕获它(即不捕获具有不同原因的异常)并且正确的做法是忽略它然后......IMO......是的它是可以接受的。

否则。没有。

Q2:在这种情况下,IOException 和 IOException 是什么意思,有什么关系吗?

答案是一点也不清楚。在正常情况下,人们不会期望在关闭输入流时出现 IOException,而且很难知道它可能意味着什么。直觉上它可能是无害的。另一方面,如果您不知道什么可能导致某事,则很难说它是否重要。

问题 3:您应该忽略此 IOException 吗?

我会说不。但我会这样处理:

    } catch (IOException ex) {
// possibly log the exception here.
throw new AssertionError("Unexpected exception", ex);
}

基本原理是,如果发生完全出乎意料的事情确实,那么如果开发人员/维护人员能够发现并想出如何处理它,那将是一件好事。

另一方面,如果您可以先验评估这里的任何 IOException 都是无害的,那么简单地记录(甚至压缩)它可能就足够了。

关于java - 我们应该在关闭缓冲流时忽略 IOException 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29843239/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com