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