处理golang中的特定错误

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)


Ker*_*den 9

将CSV Reader结构中的FieldsPerRecord设置为负数.然后,ParseErrors将不会发生不等字段计数.

看这里:

https://golang.org/pkg/encoding/csv/#example_Reader_options


Sim*_*ead 6

是的,它没有很好的文件记录(也就是说,浏览文档并没有很快给你答案).虽然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)