본문

[2017.09.12] 22. try-with 개념과 실습

try-with문은 Java 7부터 지원하는 개념으로 try statement에 선언된 리소스(close해주어야 하는)를 try statement 종료 후 자동으로 close해주는 장점이 있다.

Java SE 7 이 전

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
try {
    fos = new FileOutputStream(database, true);
    OutputStreamWriter osw = new OutputStreamWriter(fos);
    BufferedWriter bw = new BufferedWriter(osw);
    String row = item.no + COLUMN_SEP + item.name + "\n";
            
    bw.append(row);
    bw.flush();
    } catch (Exception e) {
        e.printStackTrace();
    finally {
        if (fos != null) {
        try {
            fos.close();
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}
cs


 Java SE 7 이 후

1
2
3
4
5
6
7
8
9
10
try (FileOutputStream fos = new FileOutputStream(database, true)){
    OutputStreamWriter osw = new OutputStreamWriter(fos);
    BufferedWriter bw = new BufferedWriter(osw);
    String row = item.no + COLUMN_SEP + item.name + "\n";
            
    bw.append(row);
    bw.flush();
catch (Exception e) {
    e.printStackTrace();
}



스트림의 종류와 선언보다 try-catch문이 어떻게 동작하는지에 집중해보자. 

기존의 try-catch문을 사용 할 경우FileOutputStream을 finally문을 통해 닫아주어야한다. 그리고 FileOutputStream을 닫는 것 또한 try-catch문으로 감싸줘야한다.


그러나 try-with문을 사용할 경우, FileOutputStream을 try 구문의 변수로 설정해 자동 close를 보장받는다. 이를 통한 이점은

1) 코드의 가독성(finally 없어짐)

2) 기존 코드에서는 FileOutputStream를 닫기 위해 try 밖에 FileOutputStream변수를 선언했는데 하지 않아도 됨

있다.



#try-with #try with #java 7 #try catch #예외 처리

공유

댓글