본문 바로가기

Java

예외 : try-with-resource

자바 7에서 새로 추가 된 try-with-resources를 사용하면 예외 발생 여부와 상관없이 사용했던 리소스 객체(각종 입출력 스트림, 소켓 등)의 close()메소드를 호출해서 안전하게 닫아줄 수 있다.

자바6 이전에는 이런 식으로 리소스를 닫아줬다.

FileInputStream fis = null;
		try{
			fis = new FileInputStream("file.txt");
		}catch(FileNotFoundException e){
		}finally {
			try {
				fis.close();
			} catch (IOException e) {
				...
			}
		}

try-catch안에 close()메소드를 처리해주기 위해서 다시 또 예외 처리를 해줘야 한다.

자바 7부터는 이런 식으로 쓸 수 있다. (try-with-resource)

try(FileInputStream fis =- new FileInputStream("file.txt"){
	...
}catch(FileNotFoundException e){
	...
}

try 블록이 정상적으로 실행이 완료 됐거나, 도중에 예외가 발생하게 되면 자동으로 fis.close() 메소드가 호출된다. 여러 개면 이렇게 쓸 수 있다.

try(
	FileInputStream fis = new FileInputStream("file1.txt");
	FileOutputStream fout = new FileOutputStream("file2.txt");
){
	...
}catch(IOException e){
	...
}

이런 방식으로 try-with-resources를 사용할 수 있는 것들은 한정적인데 AutoCloseable 인터페이스를 구현하고 있어야 사용이 가능하다. API 문서에서 확인가능

https://docs.oracle.com/javase/8/docs/api/ 의 AutoCloseable 인터페이서에서 All Known Implementing Classes를 보면 알 수 있다.

반응형

'Java' 카테고리의 다른 글

예외 : 사용자 정의 예외와 예외 발생  (0) 2021.03.25
예외 : 예외 떠넘기기  (0) 2021.03.25
예외 : try-catch-finally  (0) 2021.03.25
예외 : 예외와 예외 클래스  (0) 2021.03.25
어노테이션(Annotation)  (0) 2021.03.11