我最近看到了一个代码......
try ( Socket socket = new Socket("localhost", 2003);
Writer writer = new OutputStreamWriter(socket.getOutputStream());){
writer.write("data");
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
此代码中的 try catch
用作try
( somecode
){ again some code
} catch(){}
;
它工作正常;
然后我以这种方式尝试了这段代码
try {
Socket socket = new Socket("localhost", 2003);
Writer writer = new OutputStreamWriter(socket.getOutputStream());
writer.write("data");
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
此处try catch
用作try
{ again some code
} catch(){}
;
哪个也在工作......我已经熟悉这种模式......
所以我的问题是......
try catch
答案 0 :(得分:0)
Java 1.7引入了try资源的功能,您不需要显式关闭在try块中打开的资源
在1.7之前,你总是要记得关闭finally块中的资源。
如果您在try()块中打开的所有资源都实现了自动分解接口 https://docs.oracle.com/javase/7/docs/api/java/lang/AutoCloseable.html
答案 1 :(得分:0)
第二个需要$ getValueForKey keys.txt 'Eclipse_Url'
"http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/neon/3/eclipse-jee-neon-3-win32-x86_64.zip&mirror_id=1135"
关闭finally {}
。第一个将自动关闭。第一个需要jdk1.7或更高版本。
答案 2 :(得分:0)
第一个解决方案是“try-with-resources”的示例,您可以在try
块中声明可以访问的资源。
如果您使用AutoClosable
的实例,则始终可以执行此操作。在finally
内的最后一行终止后,Java将在隐式try
块中为您关闭这些资源。这非常有用,因为您不需要自己发布这些资源。
第二个例子不会关闭套接字和编写器,因此在功能上不等于解决方案1。