파일 입출력 등 자원 반납이 필요할 때 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 인터페이스를 구현한 객체여야 합니다.
불필요한 예외처리 구문들이 사라졌기 때문에 소스의 가독성이 훨씬 증가합니다.