go如何对这样的错误进行处理

比如有这么一个函数: func mydiv(a, b int) int { return a / b }

v:=mydiv(2,0)

当我传除数为0时会出除0错误,这时外面怎么处理这个错误?(千万别告诉我自己在里面判断b不能等于0啊)

共 4 个回复


jimmykuu

go中的做法当然实在里面判断,如果有错,返回错误,至于是否处理由外部决定

package main

import (
    "errors"
)

func mydiv(a, b int) (int, error) {
    if b == 0 {
        return 0, errors.New("division by zero")
    }

    return a / b, nil
}

func main() {
    a, b := 1, 0
    r, err := mydiv(a, b)
    if err != nil {
        println("b can't equal zero")
        return
    }

    println("result:", r)
}
# 0

xinyu391

可以啊 panic 然后recover

# 1

polaris

panic recover这种方式并不好。 jimmykuu说的方式是Go中推荐的做法

# 2

wzwcn

谢谢jimmykuu的回答.我一直有点担心的是,如果遇到不可预知的错误,那如何处理

# 3