[Java] try-with-resource

Aiden Shin·2020년 2월 25일
0

파일 입출력 등 자원 반납이 필요할 때 try-catch-final 구문 대신 try-with-resource 구문을 사용하면 코드 가독성이 더 증가하는 것 같습니다.


기존의 자원 반납을 위한 try-catch 문

    FileOutputStream out = null;
    try {
        out = new FileOutputStream("exFile.txt");
        //...이후 입출력 로직 처리...
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } finally {
        
        if(out != null) { //스트림이 null인지 체크
            try {
                out.close(); //close 하다가 예외가 발생할 수 있다.
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

예외시 자원을 자동으로 닫아주는 try - with - resources 문

자바7 버전에서 try - with - resources 구문이 추가되었습니다.

위에서 기존의 입출력 처리시의 예외처리는 다음과 같이 바뀌어 사용 가능합니다.

    try(FileOutputStream out = new FileOutputStream("exFile.txt")) {
        //...이후 입출력 로직 처리... 
    }catch(IOException e){
        e.printStackTrace(); 
    }

try - with - resources 구문을 사용하게 되면 입출력 처리시 예외가 발생하는 경우 JVM이 자동으로 close()를 호출하여 자원을 반납해줍니다.

try() 안에 입출력 스트림을 생성하는 로직을 작성하는데 이때 해당 객체는 AutoCloseable 인터페이스를 구현한 객체여야 합니다.

불필요한 예외처리 구문들이 사라졌기 때문에 소스의 가독성이 훨씬 증가합니다.

profile
예전 블로그: https://shinilhyun.github.io/

0개의 댓글