try-with-resources statement
5305 ワード
転入先https://www.cnblogs.com/memory4young/p/example-of-try-with-resources-statement.html https://blog.csdn.net/llkoio/article/details/78939148
リソース付きtry文(try-with-resource)の最も簡単な形式は、次のとおりです.
tryブロックが終了するとres.close()メソッドが自動的に呼び出され、リソースが閉じます.とても使いやすい文法で、finallyをたくさん書く必要はありません.リソースを閉じるために、Closeableを実現するすべてのクラス宣言を書くことができます.ストリーム操作、socket操作、新版httpclientにもよく見られます.なお、try()のカッコには複数行の宣言を書くことができ、各宣言の変数タイプはCloseableのサブクラスで、セミコロンで区切らなければならない.補足すると、この構文がない前に、フロー操作は一般的にこのように書かれています.
このように書くことができます
リソース付きtry文(try-with-resource)の最も簡単な形式は、次のとおりです.
try(Resource res = xxx)//
{
work with res
}
tryブロックが終了するとres.close()メソッドが自動的に呼び出され、リソースが閉じます.とても使いやすい文法で、finallyをたくさん書く必要はありません.リソースを閉じるために、Closeableを実現するすべてのクラス宣言を書くことができます.ストリーム操作、socket操作、新版httpclientにもよく見られます.なお、try()のカッコには複数行の宣言を書くことができ、各宣言の変数タイプはCloseableのサブクラスで、セミコロンで区切らなければならない.補足すると、この構文がない前に、フロー操作は一般的にこのように書かれています.
InputStream is = null;
OutputStream os = null;
try {
//...
} catch (IOException e) {
//...
}finally{
try {
if(os!=null){
os.close();
}
if(is!=null){
is.close();
}
} catch (IOException e2) {
//...
}
}
このように書くことができます
try (
InputStream is = new FileInputStream("...");
OutputStream os = new FileOutputStream("...");
) {
//...
} catch (IOException e) {
//...
}
package org.young.elearn;
import java.io.FileOutputStream;
import java.io.IOException;
import org.junit.Test;
/**
* try-with-resources
* try(resouces)
* {
*
* } catch (Exception e){}
*
* resource
*
* 1. resource java.lang.AutoCloseable
* 2. try
*
*
*
* @author by Young.ZHU
* on 2016 5 29
*
* Package&FileName: org.young.elearn.TryWithResourcesTest
*/
public class TryWithResourcesTest {
/**
*
*/
@Test
public void test() {
try (MyResources mr = new MyResources()) {
// mr.doSomething(4);
mr.doSomething(9);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
/**
* :
* The resource f of a try-with-resources statement cannot be assigned
*/
@Test
public void test2() {
try (FileOutputStream f = null;) {
// f = new FileOutputStream(new File(""));
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* :
* The resource type File does not implement java.lang.AutoCloseable
*/
@Test
public void test1() {
/*try (File file = new File("d:\\xx.txt");) {
} */
}
}
class MyResources implements AutoCloseable {
@Override
public void close() throws Exception {
System.out.println("resources are closed.");
}
public void doSomething(int num) throws Exception {
if (num % 2 == 0) {
System.out.println("it's OK.");
} else {
throw new Exception("Enter an even.");
}
}
}