본문 바로가기
[개발] Programming/Java

자바 try catch에 finally 사용하는 이유 (익센션 처리)

by eatyourKimchi 2022. 6. 8.

 

자바 try catch > Finally 사용 이유

 

자바로 구현된 시스템을 운영하다 보면 예상치 못한 익셉션이 종종 발생하다.

이때 리소스 관리나 프로그램을 안전하게 구성하기 위해 finally 라는 기능을 흔히 사용하게 된다.

finally는 익셉션이 발생하더라도 무조건 실행되는 구조라 특히 리소스를 반환할 때 활용하기 적합하다.

 

 

 

자바 Finally 사용 방법

 

finally는 항상 try catch 문과 함께 사용한다.

try catch는 예상치 못한 익셉션에 대응하기 위해 사용하는데,

finally는 어떠한 try catch문에 걸리더라도 무조건 마지막에 실행된다.

 

아래와 같은 예외처리 문이 있다고 가정하자.

익셉션의 종류에 해당하는 catch 문에서 걸리게 되고,

해당 위치에 구현된 내용이 실행될 것이다.

 

try {

  // 익센션을 발생시키는 소스 있다고 가정

} catch ((ArrayIndexOutOfBoundsException e) {
  
} catch (ArithmeticException e) {

} catch (Exception e) {

} finally {
  // 무조건 실행되는 부분

}

 

 

하지만, DB connection 반환이나 socket 통신 close 등등

리소스를 반환하지 않는다면 익셉션이 발생할 때마다 시스템 리소스를 잡아먹을 것이다.

 

결국 프로그램이 먹통이 될 수 있는데, 

finally에 리소스를 반환하는 구문을 넣으면 어떤 익셉션이 발생하더라도 실행된다.

 

심지어 익셉션이 발생하지 않더라도 finally는 무조건 호출되기 때문에

실무에서도 자주 활용하는 구문이다.

 

그래서 예외가 발생할 수 있는 부분은 무조건 try catch로 묶고,

리소스를 반환하는 부분은 finally 내에 구현해야 나중에 장애가 나지 않는다~!

 

 

 

댓글