예외처리 - try ~ catch ~ finally
2024. 6. 3. 16:53ㆍJAVA
try{
// 예외가 발생할 수 있는 코드
}catch(예외클래스 e){
// 정상화시키는 코드
}finally{
// try 블럭에 담긴 코드 종료 후 실행될 코드
}
앞선 글에서 try~catch 문을 짧게나마 들여다 보았다.
try ~ catch 문에는 문제점이 존재한다.
catch(잡아낼 예외 클래스 e){} 에서 예상했던 예외 외의 상황이 발생했을 때,
별도의 처리가 없으면 그대로 예외가 밖으로 날아가 버리고
결국 프로그램 종료에 이른다는 것이다.
이 때, 사용한 자원에 대한 회수 처리가 이루어져야 하는데,
JVM 관리 하에 있는 코드면 몰라도, DB 등 외부 프로그램을 사용할 경우, db는 자원회수(연결 종료)가 이루어지지 않는다.
앱에서 동일한 오류가 발생할 때마다 연결이 계속해서 새로 생성되고, 유지되고, 이윽고, db에 접속할 수 없는 상황에 이르게 된다.
따라서, 이런 상황을 미연에 방지하기 위해 finally {} 가 존재한다.
설령, RuntimeException 이 발생하여 프로그램이 종료된다 하더라도, 외부 자원은 돌려줘야 하니까.
try 블럭의 코드가 실행되도,
catch() 에서 예외를 잡아 처리 하던, 못 하던
마지막에 꼭 실행되는 블럭 finally 되시겠다.
finally 를 통해 자원 미회수에 다른 문제를 방지할 수 있게 된다.
그런데, finally로 자원 회수 해도 결국 프로그램은 멈추게 되는 상황이 발생할 수 있는데
이렇게 되면 어떻게 해야 할까?
최상위인 main()에서 catch로 예외 처리를 해야 하나?
'JAVA' 카테고리의 다른 글
| 복습 - 배열 (0) | 2024.07.02 |
|---|---|
| 배열 (0) | 2024.06.23 |
| 예외처리 - Unchecked Exception(런타임 익셉션) (0) | 2024.06.02 |
| 예외처리 -Checked Exception (0) | 2024.06.02 |
| 중첩 클래스 -정적 중첩 클래스 (0) | 2024.05.28 |