2023년 7월 20일 작성
Java - 실패하면 재시도하는 2가지 방법
Java에서 실패했을 때 재시도하는 방법으로 반복문과 재귀 함수를 사용하는 2가지 방법이 있습니다.
Re-Try-Catch : 재시도 논리
- 개발하다보면 실패했을 때 다시 시도하는 논리를 구현해야 할 때가 있습니다.
- 재시도 논리는 여러 가지 방법으로 구현할 수 있습니다.
구현 방법 | 설명 |
---|---|
반복문 사용하기 | 성공한 경우에 while 이나 for block을 빠져나가도록 합니다. |
재귀 함수 사용하기 | 실패한 경우 자기 자신을 호출합니다. |
1. 반복문을 사용하여 재시도 논리 구현하기
- 일반적으로 반복문을 사용하는 것이 재귀 함수를 사용하는 것보다 더 직관적입니다.
- 모든 과정이 성공한 후에
break;
또는return;
으로 반복문을 빠져나옵니다. - 과정 도중에 오류가 발생하면
catch
block으로 넘어가 오류를 처리하고 시도합니다.catch
block에는 탈출을 위한 code가 없기 때문에, 반복문의 처음으로 돌아가 다시 과정을 시작합니다.
while문 사용
int tryCount = 0;
int limitCount = 3;
while (tryCount < limitCount) {
tryCount = tryCount + 1;
try {
doSomething();
break;
} catch (SomeException e) {
handleException(e);
}
}
for문 사용
int limitCount = 3;
for (int tryCount = 0; tryCount < limitCount; tryCount++) {
try {
doSomething();
break;
} catch (SomeException e) {
handleException(e);
}
}
2. 재귀 함수를 사용하여 재시도 논리 구현하기
- 재귀 함수는 보통 사용하지 않는 편이 좋지만, 특정 상황에서는 유용하게 활용할 수 있습니다.
- 재귀 함수는 일반적으로 반복문에 비해 memory를 더 많이 사용합니다.
- 재귀 함수를 사용하여 가독성이나 생산성이 크게 좋아진다면 사용을 고려해 볼 수 있습니다.
/* 선언부 */
void trySomething(int tryCount, int limitCount) {
tryCount = tryCount + 1;
try {
doSomething();
} catch (SomeException e) {
handleException();
if (tryCount < limitCount) trySomething(tryCount, limitCount);
else break;
}
}
/* 호출부 */
trySomething(0, 3);