더북(TheBook)

Go 기본 라이브러리에 정의된 사용자 정의 에러 타입 예

다음은 json 패키지에 정의되어 있는 SyntaxError 타입이다.

▼ json 패키지의 SyntaxError 타입

type SyntaxError struct {
    msg    string // 에러 설명
    Offset int64  // 에러가 발생한 지점의 오프셋(byte 단위)
}
 
func (e *SyntaxError) Error() string { return e.msg }

json.Decode() 함수에서 JSON 문자열을 파싱했을 때 JSON 포맷에 맞지 않는 문자열이면 SyntaxError를 반환한다.

json.Decode() 함수를 호출하는 코드에서는 타입 어설션으로 json.SyntaxError 타입 에러가 발생했는지 확인하여 상세한 에러 정보를 얻을 수 있다.

if serr, ok := err.(*json.SyntaxError); ok {
    line, col := findLine(f, serr.Offset)
    return fmt.Errorf(”%s:%d:%d: %v”, f.Name(), line, col, err)
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.