일반적인 방법을 살펴보고 효과적인 예외 처리 전략을 생각하자
예외 상황을 파악하고 문제를 해결해서 정상 상태로 돌려놓는 것
→ IOException
발생
IOException
에러 메시지가 사용자에게 그냥 던져지는 것은 예외 복구라 볼 수 없다.→ SQLException
발생
<aside> 💡
예외처리 코드를 강제하는 체크 예외는 어떤 식으로든 복구할 가능성이 있는 경우에 사용한다.
</aside>
int maxretry = MAX_RETRY;
while(maxretry --> 0) {
try{
... // 예외가 발생할 가능성이 있는 시도
return; // 작업 성공
} catch (SomeException e){
// 1. 로그 출력
// 2. 정해진 시간만큼 대기
} finally {
// 1. 리소스 반납
// 2. 정리 작업
}
}
throw new RetryFailedException(); // 최대 재시도 횟수를 넘기는 경우 예외 발생
예외 처리를 자신이 담당하지 않고 자신을 호출한 쪽으로 던져버리는 것
throws
문으로 선언
catch
문으로 예외 잡기
<aside> 💡
빈 catch
블럭으로 예외가 발생하지 않은 것처럼 만드는 경우 (드물다)