GO · 에러처리
에러 래핑 패턴
에러에 컨텍스트를 추가하며 래핑하는 패턴. 호출 체인을 따라 에러 원인을 추적할 수 있습니다.
에러처리중급error-wrappingchaincontextdebugging
핵심 설명
에러에 컨텍스트를 추가하며 래핑하는 패턴. 호출 체인을 따라 에러 원인을 추적할 수 있습니다.
Go code
package main
import (
"errors"
"fmt"
)
var ErrDB = errors.New("데이터베이스 오류")
func queryDB() error {
return ErrDB
}
func getUser(id int) error {
if err := queryDB(); err != nil {
return fmt.Errorf("getUser(%d): %w", id, err)
}
return nil
}
func handleRequest() error {
if err := getUser(42); err != nil {
return fmt.Errorf("handleRequest: %w", err)
}
return nil
}
func main() {
err := handleRequest()
fmt.Println(err)
// handleRequest: getUser(42): 데이터베이스 오류
// 체인을 따라 원인 추적
fmt.Println(errors.Is(err, ErrDB)) // true
// Unwrap 체인
for err != nil {
fmt.Println("→", err)
err = errors.Unwrap(err)
}
}학습 팁
에러 메시지에 함수명과 핵심 인자를 포함하면 로그만으로 문제를 추적할 수 있습니다.
주의할 점
에러 래핑 시 민감한 정보(비밀번호, 토큰 등)를 포함하지 마세요. 로그에 노출될 수 있습니다.
자주 묻는 질문
에러 래핑 패턴란 무엇인가요?
에러에 컨텍스트를 추가하며 래핑하는 패턴. 호출 체인을 따라 에러 원인을 추적할 수 있습니다.
에러 래핑 패턴 학습 시 주의할 점은 무엇인가요?
에러 래핑 시 민감한 정보(비밀번호, 토큰 등)를 포함하지 마세요. 로그에 노출될 수 있습니다.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.