Megidd
Megidd

Reputation: 7989

Handling two consecutive errors

While reading a code, I ran into the following error handling currently implemented in the code:

    nodes, err := model.AllNodes()
    links, err := model.AllLinks()
    if err != nil {
        // Do stuff
    }

I'm curious to know if the above error handling can create unpredictable results. I have this alternative in mind:

    nodes, err1 := model.AllNodes()
    if err1 != nil {
        // Do stuff
    }
    links, err2 := model.AllLinks()
    if err2 != nil {
        // Do stuff
    }

Or maybe this:

    nodes, err1 := model.AllNodes()
    links, err2 := model.AllLinks()
    if err1 != nil || err2 != nil {
        // Do stuff
    }

I'm not sure, please help me to know if the current implemented error handling can cause a bug. Please let me know if there is a better alternative. Thanks.

Upvotes: 3

Views: 424

Answers (1)

Jonathan Hall
Jonathan Hall

Reputation: 79764

You are right to be concerned. The first error is not being handled at all, which is probably a bug. If the author intended not to check that error, it would be much more clear to do so explicitly:

nodes, _ := model.AllNodes()
links, err := model.AllLinks()
if err != nil {
    // Do stuff
}

Upvotes: 8

Related Questions