피드로 돌아가기
Dev.toBackend
원문 읽기
Exception 제거를 통한 Control Flow 명시화 및 예측 가능한 시스템 설계
¿Por qué Go no tiene excepciones? Primeros pasos
AI 요약
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를 통해 상위 레이어로 전파할 것