본문 바로가기

책, 강의 정리/이펙티브자바

아이템 [9] - try-finally 보다는 try-with-resources 를 사용하라

try-finally 의 문제점

try 문과 finally 문 모두에서 Exception 이 발생하면 finally 에서 발생한 Exception 만 보이기 때문에 디버깅이 어렵다.

 

 

try-with-resources 를 사용하자

- 예외 발생 시 close 문에서 나오는 예외는 숨겨지기 때문에 try 문에서의 예외를 확인할 수 있다.

- catch 문을 사용하여 예외 발생 시 또 다른 값을 반환하도록 할 수 있다.

public class SampleResource implements AutoCloseable{

    public void hello(){
        System.out.println("Hello!");
    }

    @Override
    public void close() throws Exception {
        System.out.println("Close!");

    }
}


public class Main {
    public static void main(String[] args) throws Exception {
        try(SampleResource sampleResource = new SampleResource()){
            sampleResource.hello();
        }
    }
}