[Java] - try-with-resources

링딩·2023년 4월 15일
0

Computer Science

목록 보기
31/49




try-with-resources


1. try-with-resources의 탄생 배경

try-catch-finally로 자원을 반납하는 경우를 먼저 살펴보도록 하자.

두 가지를 모두 보고 비교함으로써 왜 try-with-resources를 사용해야 하는지 이해가 보다 더 잘 갈 것이다.


🔎 try-catch-finally

Java 7 이전까지는....사용 후에 반납해주어야 하는 자원들은 Closable 인터페이스를 통해 구현하고 있으며, 사용 후에 close 메소드를 호출해주어야 했다.
close 메소드를 호출하기 위해서는 try-catch-finally를 이용해야 되었고, 이로 인해서 아래와 같은 문제가 생겼었다.

  • 코드가 복잡해짐
  • 작업이 번잡함
  • 실수나 에러로 인해 자원을 반납하지 못하는 경우가 생김

=> 이로 인해 Java7부터는 자원을 자동으로 반납해주는 try-with-resources가 문제를 해결하기 위해 나타났다!


🔴 주의

try-with-resources는 try에 자원 객체를 전달하면, try 코드 블록이 끝나면 자동으로 자원을 종료해주는 기능이다.

즉, 따로 finally 블록이나 모든 catch 블록에 종료 처리를 하지 않아도 된다.
-> 이때 try에 전달할 수 있는 자원은 AutoCloseable 인터페이스의 구현체로 한정된다!


그래서 우린 다음과 같은 이유로 try-with-resources를 사용한다

곧.. 우리는 다음과 같은 이유로 반드시 try-catch-finally가 아닌 try-with-resources를 사용해주어야 한다.

  1. 코드를 간결하게 만들 수 있음
  2. 번거로운 자원 반납 작업을 하지 않아도
  3. 실수로 자원을 반납하지 못하는 경우를 방지할 수 있음
  4. 에러로 자원을 반납하지 못하는 경우를 방지할 수 있음
  5. 모든 에러에 대한 스택 트레이스를 남길 수 있음
profile
초짜 백엔드 개린이

0개의 댓글