AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

오류 모델링

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

Node.js 및 TypeScript 기반 애플리케이션 개발자, 특히 오류 처리 및 로깅을 담당하는 개발자

핵심 요약

  • 오류 유형 분류: SyntaxError, TypeError, ValidationError, Internal Server Error 등 오류의 원인과 대응 전략이 다름
  • 오류 추적 강화: Error.prototype.cause를 활용해 오류 원인을 체인하여 추적 가능
  • 오류 전환 전략: 외부 서비스 오류를 PaymentFailedError 등 맞춤 오류로 변환하여 사용자/운영자에 맞는 처리 가능

섹션별 세부 요약

1. 오류 유형의 개념적 이해

  • SyntaxError: JSON 파싱 실패 시 발생, 외부 API 응답의 형식 검증 누락으로 인해 발생
  • TypeError: null 값에 접근 시 발생, 정적 코드 분석으로 사전에 탐지 가능
  • ValidationError: 데이터베이스 또는 도메인 레이어에서 발생, 사용자에게 명확한 피드백 제공
  • Internal Server Error: HTTP 500 상태 코드로 표현, 서버 측의 심각한 오류로 로깅 및 복구 필요

2. 오류 처리 전략

  • 개발자 중심 오류: SyntaxError/TypeError는 컴파일 시점 또는 정적 분석으로 사전 탐지, 런타임 시 로깅으로 대응
  • 사용자 중심 오류: ValidationError는 사용자에게 피드백 제공, 오류 추적 시스템에서는 무시
  • 서버 측 오류: Internal Server Error는 내부 로깅 시 많은 세부 정보 수집, 클라이언트에는 최소한의 정보 노출

3. 오류 전파 및 추적

  • 스택 트레이스: FunctionA() → FunctionB() → FunctionC() 순으로 오류 전파, catch 블록으로 중단 가능
  • 오류 체인: Error.prototype.cause로 오류 원인 체인 생성, Sentry 등 오류 추적 도구에 추가 정보 제공

4. 오류 전환 및 처리 예시

  • Stripe API 오류 처리:

```typescript

try {

stripe.pay();

} catch (stripeError) {

if (stripeError instanceof Stripe.InvalidCardDetails) {

throw new PaymentFailedError("Payment failed due to invalid payment details", { cause: stripeError });

}

}

```

  • 오류 유형에 따른 대응:

- PaymentFailedError: 사용자에게 재시도 요청

- GatewayAuthError: 운영자에게 알림, FATAL 레벨 로깅

결론

  • 오류 모델링 핵심: Error.prototype.cause를 활용한 오류 원인 체인, 오류 유형에 따른 대응 전략 구분
  • 실무 적용 팁: 외부 서비스 오류를 맞춤 오류로 변환하여 사용자/운영자 분리 처리, 로깅 시 세부 정보 수집 후 클라이언트에는 최소 정보 노출
  • 추천: 오류 유형을 사전에 정의하고, 각 오류에 맞는 데이터를 체계적으로 모델링하여 추적 및 복구 가능하게 설계