Go panic/recover는 예외 처리용이 아니다
페이지 정보

영삼이
본문
✅ panic/recover는 예외 처리용이 아니다
복구 불가능한 상황에만 써야 한다
Go에는 panic()
과 recover()
로 예외처럼 보이는 구조가 있다:
func risky() {
panic("무언가 잘못됨")
}
func safe() {
defer func() {
if r := recover(); r != nil {
fmt.Println("복구:", r)
}
}()
risky()
}
❌ 문제 상황
-
panic
을 자주 쓰면 흐름 제어가 어려워지고 -
recover
는 중간 상태를 망가뜨릴 수 있음 -
실제로는 예외 처리와 다르게 작동 (스택, 자원 해제, 복구 불완전)
✅ Go에서 에러 처리의 기본은 error
func do() error {
if somethingWrong {
return errors.New("문제 발생")
}
return nil
}
-
명시적 처리
-
흐름 제어 가능
-
예상 가능한 동작
✔️ panic/recover
는 정말 복구 불가능한 경우에만
예: 초기화 실패, 프로그래밍 오류 등
정상적인 예외 처리에는 절대 사용하지 말자.
- 이전글Go에서 시간 측정은 time.Since()가 정석이다 25.03.28
- 다음글init 함수 남발은 코드 흐름을 망친다 25.03.28
댓글목록
등록된 댓글이 없습니다.