try-with-resouces

Single Ko·2023년 4월 6일
0

java

목록 보기
20/28

try-with-resources란?

  1. 기존 예외 처리인 try-catch-finally의 문제점을 보완하기 위해 나온 개념. try 블록 안에 리소스를 전달하면 try블록이 끝나고 자동으로 리소스를 해제해주는 기능이다. 즉 따로 finally 구문이나 catch구문에 종료 처리를 하지 않아도 된다. 리소스에는 java.lang.AutoCloseable 인터페이스를 구현하는 모든 것이 포함됩니다

try-with-resouces의 예외 코드

 try (FileInputStream fileInputStream = new FileInputStream("example.txt")) {
    // Use the file input stream
} catch (IOException e) {
    // Handle the exception
}
  1. 반면 try-catch-finally의 경우에는 try 블록을 사용하여 예외를 throw할 수 있는 코드를 묶습니다. 예외가 발생하면 하나 이상의 catch 블록에 의해 포착된 다음 finally 블록이 실행됩니다. finally 블록은 예외 발생 여부에 관계없이 항상 실행됩니다.
FileInputStream fileInputStream = null;
try {
    fileInputStream = new FileInputStream("example.txt");
    // Use the file input stream
} catch (IOException e) {
    // Handle the exception
} finally {
    if (fileInputStream != null) {
        try {
            fileInputStream.close();
        } catch (IOException e) {
            // Handle the exception
        }
    }
}

주요 차이점

  • try-with-resources는 리소스를 자동으로 닫는 반면 try-catch-finally는 리소스를 수동으로 닫아야 한다는 것입니다.

  • 코드가 더 읽기 쉽고 작성하기 쉬움. Java9이후에는 기존의 변수도 try-with-resources문에서 사용 가능해 더욱 간결. 여러 개의 리소스를 한번에 선언하고 닫을 수 있다. 각 리소스는 ; 으로 구분 됩니다.

profile
공부 정리 블로그

0개의 댓글