일반적인 방법을 살펴보고 효과적인 예외 처리 전략을 생각하자

예외 복구

예외 상황을 파악하고 문제를 해결해서 정상 상태로 돌려놓는 것

  1. 예외 복구
  2. 예외 처리 회피
  3. 예외 전환

예시 상황: 사용자가 요청한 파일이 없거나 다른 문제가 있어 읽히지 않음

IOException 발생

예시 상황: 네트워크가 불안정하여 서버 접속이 잘 안되는 DB 서버 접속 실패

SQLException 발생

<aside> 💡

예외처리 코드를 강제하는 체크 예외는 어떤 식으로든 복구할 가능성이 있는 경우에 사용한다.

</aside>

int maxretry = MAX_RETRY;
while(maxretry --> 0) {
	try{
		
			...		// 예외가 발생할 가능성이 있는 시도
		return; // 작업 성공
	} catch (SomeException e){

		// 1. 로그 출력
		// 2. 정해진 시간만큼 대기
		
	} finally {
		// 1. 리소스 반납
		// 2. 정리 작업
	}
}
throw new RetryFailedException(); // 최대 재시도 횟수를 넘기는 경우 예외 발생

예외 처리 회피

예외 처리를 자신이 담당하지 않고 자신을 호출한 쪽으로 던져버리는 것

  1. throws 문으로 선언
  2. catch 문으로 예외 잡기

<aside> 💡

catch 블럭으로 예외가 발생하지 않은 것처럼 만드는 경우 (드물다)