[Java] try-catch, try-with-resources

devdo·2024년 3월 24일
0

Java

목록 보기
57/59

try-with-resources란?

  • jdk 1.7 버전때 등장
  • 예외 발생과 상관없이, close() 메서드 호출을 기본으로 해준다.

try-with-resources 예시

BufferedReader, BufferedWriter 등은 close()를 자동으로 호출해주는 AutoCloseable 인터페이스를 상속하는 객체이다.

다음 예시는 이미 close() 메서드를 호출하고 있는 것이다.

public class AutoCloseTest2 {

    public static void main(String[] args) {
        // try-with-resources 예시 만들기
        Path path = Path.of("src/trycatch/example.txt");

        // try-with-resources 예시 만들기
        try (
             BufferedWriter w = new BufferedWriter(new FileWriter(path.toFile()));
             BufferedReader r = new BufferedReader(new FileReader(path.toFile()))) {
            w.write("Hello, World! dsg!!!!!!!!");
            w.flush();
            // 파일 읽기
            r.lines().forEach(System.out::println);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

}

try-catch-finally 비교

public class AutoCloseTest {

    public static void main(String[] args) {

        BufferedWriter w = null;
        BufferedReader r = null;
        Path path = Path.of("src/trycatch/example.txt");

        try {
            // Writing to the file
            w = new BufferedWriter(new FileWriter(path.toFile()));
            w.write("Hello, World! dsg!!!!!!!!!!!!!!!!!!!!!!!!!");
            w.flush();

            // Reading from the file
            r = new BufferedReader(new FileReader(path.toFile()));
            r.lines().forEach(System.out::println);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            // Closing resources in the finally block
            try {
                if (w != null) {
                    w.close();
                }
                if (r != null) {
                    r.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
profile
배운 것을 기록합니다.

0개의 댓글