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) }