try-with-resource에 대해서 설명해주세요.

     

    왜 도입되었을까?

    자바 7 버전 이전에는 하나 이상의 리소스를 사용할 경우 개발자가 임의로 finally문에서 ~~. close()를 사용하여 자원을 해제시켜줘야 했습니다. 만약 자원을 해제시켜주지 않았다면, 해제되지 않는 자원들이 누적되어 프로그램이 오작동하는 원인이 되었기 때문에 자원 해제는 필수였습니다. 하지만 이런 식으로 자원 해제를 위한 코드가 중복적으로 발생하기 때문에 소스 코드의 가독성을 해치는 단점이 생겼습니다.

     

     

    try-with-resource란?

    가독성과 유지보수의 편의성을 위해 리소스 작업을 포함하는 코드들의 예외처리를 할 수 있도록 도와주기 위해,

    자바 버전7에 도입된 문법이며, try~catch를 사용하는 것은 이전 문법과 동일하지만, AutoCloseable이라는 인터페이스를 구현하고 있으면, try-with-resource라는 문법을 사용할 수 있습니다.

     

     

    FileWriter 클래스AutoCloserable를 구현하고 있기 때문에, try-with-resoruce문법이 가능합니다.

     

     

    try catch finally와 try with resource statements 비교

    출처 : 생활코딩

     

    try의 ()안에다 close가 필요한 클래스를 인스턴스화 시키는 코드를 가져다 놓는다면, 자바는 모든 작업이 끝난 후 close를 내부적으로 수행시켜줍니다.

     

    추가로, 자바 9 버전에서는 try() 문 안에 명시적으로 객체 선언을 하기보다는 try 문 바깥에서 객체 선언을 하고 생성된 인스턴스의 변수를 넣어줄 수 있도록 바뀌었습니다.

    Java 7 : try(BufferedReader br = new BufferedReader())
    Java 9 : try(br)

    출처 : https://github.com/ksundong/backend-interview-question

     

     

     

     

    참고 영상

     

     

    728x90

    댓글