Go没有像Java中的try / catch这样的异常机制, 我们不能在Go中抛出异常。
Go使用另一种机制, 称为延迟恐慌和恢复机制。
Go通过返回错误对象来处理函数, 方法的简单错误。错误对象可以是唯一或最后一个返回值。如果函数中没有错误, 则错误对象为nil。
无论是否收到错误, 我们都应始终在调用语句中检查错误。
我们永远不要忽略错误, 它可能导致程序崩溃。
去检测和报告错误情况的方法是
- 可能导致错误的函数将返回两个变量:一个值和一个错误代码, 如果成功, 则为nil;如果错误条件, 则为== nil。
- 在函数调用之后检查错误。如果发生错误(如果错误!= nil), 则停止执行实际功能(或必要时整个程序)。
Go具有预定义的错误接口类型
type error interface {
Error() string
}
我们可以使用错误包中的error.New定义错误类型, 并提供适当的错误消息, 例如:
err := errors.New("math - square root of negative number")
出错示例
package main
import "errors"
import "fmt"
import "math"
func Sqrt(value float64) (float64, error) {
if (value < 0) {
return 0, errors.New("Math: negative number passed to Sqrt")
}
return math.Sqrt(value), nil
}
func main() {
result, err := Sqrt(-64)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(result)
}
result, err = Sqrt(64)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(result)
}
}
输出:
Math: negative number passed to Sqrt
8