尝试与 - 资源的Java 7?

问题描述 投票:5回答:4

在Java 7中的新尝试,与国际资源的语法,我需要担心资源的顺序?

try (InputStream in = loadInput(...); // <--- can these be in any order?
     OutputStream out = createOutput(...) ){
    copy(in, out);
}
catch (Exception e) {
    // Problem reading and writing streams.
    // Or problem opening one of them.
    // If compound error closing streams occurs, it will be recorded on this exception 
    // as a "suppressedException".
} 
java-7 try-with-resources
4个回答
7
投票

订购事宜当且仅当它会使用正常的尝试当物质{创建资源} {终于接近资源}语法。这是首次获得的资源将在上次关闭。见the technotes了解详情。


1
投票

在你的榜样,订单绝对没有关系。你只有在try块,其中两个已经可以使用的资源。如果您将连接到数据库,命令或开放的问题,但我会创建一个单独的方法来覆盖。此方法需要实现AutoClosable和覆盖的方法关闭()。虽然接近()抛出一个异常,你的方法不一定。


0
投票

其实顺序并不重要的。理想情况下,如果资源是不相关的,你可以按任何顺序打开他们,他们可以以任何顺序被关闭。

如果资源是相关的,你要按照顺序来创建它们,比如先建立连接,然后PreparedStatement的,我没有任何证据,但我认为Java关闭资源FIFO以避免任何依赖性问题。


0
投票

它很重要,如果一个资源的开放依赖于其他资源被打开。例如,如果B的开放需要一个被打开,你会明显要敞开的第一。另外要注意的是,资源在它们被打开相反的顺序关闭。例如,如果打开A,然后B,那么当尝试 - 与资源关闭它们,B闭合第一后跟A.

© www.soinside.com 2019 - 2024. All rights reserved.