Jar*_*key 7 csv error-handling go
我试图简单地忽略csv.ErrFieldCount我们的代码中的错误,但似乎只能看一个错误.我在这做错了什么?
record, err := reader.Read()
if err != nil {
if err == csv.ErrFieldCount {
return nil
}
return err
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行代码时,csv文件的最后一行给了我这个错误 line 11535, column 0: wrong number of fields in line
Jim*_*imB 15
csv.Reader不返回该错误,它返回一个csv.ParseError.首先需要检查是否有ParseError,然后检查Err字段:
if err, ok := err.(*csv.ParseError); ok && err.Err == csv.ErrFieldCount {
return nil
}
Run Code Online (Sandbox Code Playgroud)
将CSV Reader结构中的FieldsPerRecord设置为负数.然后,ParseErrors将不会发生不等字段计数.
看这里:
https://golang.org/pkg/encoding/csv/#example_Reader_options
是的,它没有很好的文件记录(也就是说,浏览文档并没有很快给你答案).虽然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
}
Run Code Online (Sandbox Code Playgroud)