技能 error-handling-patterns
📦

error-handling-patterns

安全

견고한 에러 처리 패턴 구현

也可从以下获取: wshobson

Python, TypeScript, Rust, Go 에서 예외, Result 타입, 재시도 로직, 서킷 브레이커를 포함한 에러 처리 패턴을 마스터하여 더욱 회복력 있는 애플리케이션을 구축하세요.

支持: Claude Codex Code(CC)
🥉 75 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“error-handling-patterns”。 외부 API 를 호출할 때 에러를 어떻게 처리해야 하나요?

预期结果:

외부 API 호출의 경우 다중 레이어의 에러 처리를 구현하세요: (1) 다양한 장애 타입을 위한 커스텀 예외 계층, (2) 일시적 에러를 위한 지수 백오프가 포함된 재시도, (3) 연쇄 장애 방지를 위한 서킷 브레이커, (4) 폴백 데이터를 통한 우아한 성능 저하. 예시 접근 방식: 커스텀 예외 생성 (NetworkError, TimeoutError, RateLimitError), 3 번 시도와 지수 백오프가 포함된 재시도 데코레이터로 API 호출 래핑, 장애율을 추적하기 위한 서킷 브레이커 사용, API 사용 불가 시 캐시된 폴백 제공.

正在使用“error-handling-patterns”。 예외 대신 Result 타입을 언제 사용해야 하나요?

预期结果:

호출자가 성공과 실패 케이스를 모두 명시적으로 처리해야 하는 예상된 실패 (유효성 검사 에러, 찾을 수 없음 에러, 비즈니스 로직 에러) 에는 Result 타입을 사용하세요. 진짜 예외적인 상황 (null 포인터, 메모리 부족, 예상치 못한 런타임 에러) 에는 예외를 사용하세요. Result 타입은 타입 시스템에서 에러 처리를 명시적으로 만들어 호출자가 실패 케이스를 고려하도록 강제합니다. TypeScript 에서 Result<T, E> = { ok: true, value: T } | { ok: false, error: E } 입니다. Rust 에서 ? 연산자와 Result<T, E> 타입은 내장 지원을 제공합니다. 이 접근 방식은 코드 가독성을 향상시키고 예상치 못한 런타임 에러를 줄입니다.

安全审计

安全
v1 • 2/24/2026

This skill is a documentation and educational resource about error handling patterns. The static scanner flagged 49 potential issues, but after evaluation all findings are FALSE POSITIVES. The detected patterns (backtick syntax examples, HTTP library examples, error categories) are educational code snippets in markdown documentation, not executable malicious code. No security concerns identified.

2
已扫描文件
674
分析行数
0
发现项
1
审计总数
未发现安全问题
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
100
规范符合性

你能构建什么

애플리케이션 신뢰성 개선

적절한 예외 계층과 의미 있는 에러 메시지로 새 기능이나 기존 기능에 견고한 에러 처리를 추가합니다.

내결함성 시스템 구축

분산 시스템 및 마이크로서비스를 위해 재시도 로직, 서킷 브레이커, 우아한 성능 저하를 구현합니다.

크로스 언어 패턴 학습

각 상황에 맞는 최선의 접근 방식을 선택하기 위해 Python, TypeScript, Rust, Go 전반의 에러 처리 방식을 이해합니다.

试试这些提示

기본 예외 처리
데이터베이스에서 사용자 데이터를 가져오는 함수에 적절한 에러 처리를 구현하고 싶습니다. 커스텀 예외 클래스를 생성하고 다양한 에러 시나리오를 적절히 처리하려고 합니다.
Result 타입 구현
JSON 데이터 파싱을 위해 TypeScript 에서 Result 타입 패턴을 구현하는 방법을 보여주세요. 적절한 에러 타입과 체이닝 가능한 에러 처리를 포함하세요.
백오프가 포함된 재시도
네트워크 호출을 위해 지수 백오프가 포함된 재시도 로직을 구현하는 Python 데코레이터를 생성하세요. 다양한 예외 타입을 처리하고 구성 가능한 시도 횟수를 포함하세요.
서킷 브레이커 패턴
외부 API 호출 시 연쇄 장애를 방지하기 위해 Python 에서 서킷 브레이커 패턴을 구현하세요. closed, open, half-open 상태를 포함하세요.

最佳实践

  • 입력을 일찍 검증하고 컨텍스트가 포함된 의미 있는 에러 메시지를 제공하여 빠르게 실패
  • 스택 트레이스, 타임스탬프, 관련 메타데이터를 포함한 에러 컨텍스트 보존
  • 의미 있게 응답할 수 있는 적절한 수준에서 에러 처리
  • 적절하게 에러 로깅 - 예상된 유효성 검사 실패가 아닌 예상치 못한 에러 로깅

避免

  • 버그를 숨기는 제네릭 Exception 핸들러로 너무 광범위하게 캐치
  • 로깅이나 처리 없이 에러를 조용히 삼키는 빈 catch 블록
  • 적절한 예외나 Result 타입 대신 에러 코드 반환
  • 프롬리스 거절을 적절히 처리하지 않아 비동기 에러 무시

常见问题

예외와 Result 타입의 차이점은 무엇인가요?
예외는 try-catch 블록으로 제어 흐름을 방해하는 전통적인 에러 처리 방식입니다. Result 타입은 호출자가 두 케이스를 모두 처리하도록 요구하는 명시적 성공/실패 타입입니다. Result 타입은 타입 시스템에서 에러 처리를 가시적으로 만들며 Rust 와 Haskell 같은 함수형 프로그래밍 언어에서 일반적입니다.
언제 서킷 브레이커를 사용해야 하나요?
사용 불가해질 수 있는 외부 서비스나 API 를 호출할 때 서킷 브레이커를 사용하세요. 반복되는 실패하는 요청으로 리소스를 소모하는 대신 서비스가 다운되었을 때 빠르게 실패함으로써 연쇄 장애를 방지합니다. 서킷은 closed (정상), open (실패), half-open (복구 테스트) 상태 간에 전환됩니다.
재시도를 위한 지수 백오프는 어떻게 작동하나요?
지수 백오프는 재시도 시도 간의 대기 시간을 증가시킵니다 (예: 1 초, 2 초, 4 초, 8 초). 이는 실패하는 서비스에 반복적인 요청으로 압도를 방지하면서도 복구할 시간을 줍니다. 쏠림 현상 방지를 위해 지터 (무작위 변동) 를 추가하세요.
우아한 성능 저하란 무엇인가요?
우아한 성능 저하는 에러 발생 시 폴백 기능을 제공합니다. 예를 들어, 캐싱 서비스가 실패하면 데이터베이스로 폴백합니다. 둘 다 실패하면 캐시된 오래된 데이터를 반환합니다. 애플리케이션은 완전히 실패하는 대신 감소된 기능으로 작동을 계속합니다.
예외를 캐치해야 하나요, 아니면 전파되도록 해야 하나요?
의미 있게 처리할 수 있는 곳에서만 예외를 캐치하세요. 예상치 못한 예외는 적절히 로깅하는 중앙 집중식 에러 핸들러로 전파되도록 하세요. 이는 지나치게 광범위한 catch 블록으로 버그를 숨기는 것을 방지하면서 에러가 적절히 로깅되고 보고되도록 보장합니다.
의미 있는 에러 메시지를 어떻게 만들나요?
좋은 에러 메시지에는 무엇이 실패했는지, 왜 실패했는지, 무엇을 해야 하는지가 포함됩니다. 사용자 ID, 요청 ID, 타임스탬프와 같은 관련 컨텍스트를 포함하세요. '에러 발생'과 같은 제네릭 메시지를 피하고 대신 '사용자 ID 123 의 사용자 프로필 가져오기 실패: 30 초 후 연결 타임아웃'이라고 하세요.