2015-11-30 5 views
4

Я пытаюсь просто проигнорировать ошибку csv.ErrFieldCount в нашем коде, но, похоже, не вижу только одной ошибки. Что я здесь делаю неправильно?Обратите внимание на конкретную ошибку в golang

record, err := reader.Read() 
if err != nil { 
    if err == csv.ErrFieldCount { 
     return nil 
    } 
    return err 
} 

Но когда я запускаю код последней строки файла CSV дает мне эту ошибку paniced line 11535, column 0: wrong number of fields in line

ответ

11

csv.Reader не возвращает эту ошибку, она возвращает csv.ParseError. Сначала нужно проверить, если у вас есть ParseError, а затем проверить поле Err:

if err, ok := err.(*csv.ParseError); ok && err.Err == csv.ErrFieldCount { 
    return nil 
} 
3

Да его не очень хорошо документально (то есть, глядя на документации не дает вам ответ очень быстро) , Хотя Read() возвращает error, его на самом деле экземпляр *csv.ParseError который можно утверждать и проверить:

record, err := reader.Read() 
if err != nil { 
    if perr, ok := err.(*csv.ParseError); ok && perr.Err == csv.ErrFieldCount { 
     return nil 
    } 
    return err 
} 
Смежные вопросы