자바 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 |
Uploaded by Notion2Tistory v1.1.0