피드로 돌아가기
¿Por qué Go no tiene excepciones? Primeros pasos
Dev.toDev.to
Backend

Exception 제거를 통한 Control Flow 명시화 및 예측 가능한 시스템 설계

¿Por qué Go no tiene excepciones? Primeros pasos

Juan Carlos Garcia Esquivel2026년 5월 27일10beginner

Context

Java, Python 등 기존 언어의 Try-Catch 기반 Exception 처리 방식이 Control Flow를 은닉하여 런타임 예측 가능성을 저하시킴. 비정상적인 실행 흐름의 갑작스러운 전파로 인해 프로덕션 환경에서 예상치 못한 시스템 붕괴 위험이 상존하는 한계점 분석.

Technical Solution

  • Error를 특수 이벤트가 아닌 일반 Return Value로 처리하는 설계 채택
  • Interface error 구현을 통한 단순한 에러 정의 및 타입 시스템 통합
  • Guard Clause 패턴 적용으로 에러 발생 시 즉각적인 Early Return 수행
  • Happy Path to the Left 원칙을 통한 코드 들여쓰기 최소화 및 수직적 가독성 확보
  • Sentinel Error 도입으로 전역적으로 정의된 특정 에러 상태의 일관된 식별 가능
  • Panic 사용을 하드웨어 결함 등 치명적 상황으로 제한하여 시스템 안정성 강화

1. 함수 설계 시 에러 발생 가능성이 있다면 반드시 마지막 리턴 값으로 error 타입을 포함할 것

2. 에러 발생 시 즉시 리턴하는 Guard Clause를 적용하여 메인 로직의 Depth를 낮게 유지할 것

3. 내부 함수에서 로그 기록과 에러 리턴을 동시에 수행하여 중복 로그가 발생하는 안티 패턴을 배제할 것

4. 비즈니스 로직 실패에 Panic을 사용하지 말고 명시적인 error value를 통해 상위 레이어로 전파할 것

원문 읽기