Backend2025년 7월 10일2분 읽기

Go 에러 핸들링 베스트 프랙티스

YS
YoungSam
조회 1687

에러 래핑

func getUser(id int) (*User, error) {
    user, err := db.FindUser(id)
    if err != nil {
        return nil, fmt.Errorf("getUser(%d): %w", id, err)
    }
    return user, nil
}

// 에러 체인 검사
if errors.Is(err, sql.ErrNoRows) {
    // 404 처리
}

커스텀 에러 타입

type NotFoundError struct {
    Resource string
    ID       int
}
func (e *NotFoundError) Error() string {
    return fmt.Sprintf("%s %d not found", e.Resource, e.ID)
}

var target *NotFoundError
if errors.As(err, &target) {
    // target.Resource, target.ID 사용
}
GoError HandlingBest Practice

댓글 0

아직 댓글이 없습니다.