Home / AI / AI 용어사전 / 에러 핸들링(Error Handling) — AI 앱이 오류에도 멈추지 않는 방법
TERM
에러 핸들링(Error Handling) — AI 앱이 오류에도 멈추지 않는 방법
On this page
API 호출이 실패하고, 잘못된 데이터가 들어오고, 서버가 응답하지 않는다. AI 서비스가 이런 상황에서도 멈추지 않으려면 에러 핸들링(Error Handling)이 필수 설계 요소다.
정의
에러 핸들링(Error Handling)은 프로그램 실행 중 발생하는 오류(예외·Exception)를 감지하고, 처리하고, 복구하는 일련의 기법이다. 오류를 방치하면 앱 전체가 크래시되지만, 에러 핸들링이 적용된 코드는 오류를 격리하고 사용자에게 적절한 피드백을 제공하면서 계속 실행된다. AI 서비스처럼 외부 API 의존도가 높은 애플리케이션일수록 에러 핸들링의 품질이 사용자 경험을 결정한다.
try-catch-finally 구조
가장 보편적인 에러 핸들링 패턴은 try-catch-finally 블록이다. 세 블록 각각의 역할이 명확하게 구분된다.
async function callAI(prompt) {
try {
const response = await fetch('/api/claude', {
method: 'POST',
body: JSON.stringify({ prompt }),
});
if (!response.ok) {
throw new Error(`HTTP 오류: ${response.status}`);
}
return await response.json();
} catch (error) {
if (error.name === 'AbortError') {
console.error('요청 타임아웃');
} else if (error.message.includes('HTTP 오류')) {
console.error('서버 오류:', error.message);
} else {
console.error('알 수 없는 오류:', error);
}
throw error;
} finally {
setLoading(false);
}
}- try: 정상 실행 코드. 오류 발생 시 즉시
catch블록으로 이동. - catch: 오류 처리 블록.
error객체에서 타입·메시지·스택 추적 가능. - finally: 성공·실패 관계없이 반드시 실행. 리소스 해제, 로딩 상태 초기화에 활용.
에러 타입 분류
AI 서비스에서 자주 발생하는 에러는 세 유형으로 분류된다.
네트워크 오류: API 서버 접속 실패, 타임아웃, DNS 오류. fetch 자체가 거부(reject)되며 catch 블록에서 TypeError: Failed to fetch 형태로 나타난다. 재시도(retry) 로직과 지수 백오프(exponential backoff)를 함께 구현하는 것이 표준 패턴이다.
HTTP 오류: 서버는 응답했으나 상태 코드가 4xx 또는 5xx인 경우. response.ok 속성이 false가 되므로 명시적으로 오류를 throw해야 한다. 401 Unauthorized(인증 만료), 429 Too Many Requests(레이트 리밋), 500 Internal Server Error(서버 내부 오류)가 AI API 호출에서 가장 흔하게 발생한다.
비즈니스 로직 오류: HTTP 응답은 200이지만 반환된 데이터 구조가 예상과 다른 경우. JSON 파싱 오류, 필수 필드 누락, 유효성 검사 실패가 해당된다. zod나 typescript 타입 가드(type guard)로 런타임에서 구조를 검증하는 방어적 코딩이 권장된다.
활용 사례
- AI API 재시도 로직: Anthropic·OpenAI API에서 429 오류 발생 시 1초 → 2초 → 4초 간격으로 자동 재시도. 최대 3회 시도 후 사용자에게 명확한 오류 메시지 표시.
- 사용자 친화적 피드백: 오류 종류에 따라 "인터넷 연결을 확인해 주세요" 또는 "요청이 많아 잠시 후 다시 시도해 주세요" 등 맥락에 맞는 메시지 제공. 기술적 에러 코드를 사용자에게 직접 노출하지 않음.
- 오류 모니터링 연동: sentry·datadog 같은 오류 추적 도구와 연동해 운영 중 발생한 예외를 실시간 수집하고, 빈도·패턴을 분석해 근본 원인을 파악.
관련 용어
- exception — 에러 핸들링의 대상이 되는 예외 객체
- async-await — 비동기 코드에서 try-catch와 함께 사용하는 비동기 처리 문법
- callback — 에러 퍼스트 콜백(error-first callback) 패턴의 기반
- http-status-code — 네트워크 오류 분류의 기준이 되는 상태 코드 체계
- typescript — 컴파일 타임 타입 검사로 비즈니스 로직 오류를 사전에 방지