1、error接口
func foo(param int)(ret int, err error)
{
error := errors.New("发生错误咯")
...
}
//调用
n, err := foo(0)
if err != nil {
// 错误处理
} else {
// 使用返回值n
}
2、defer
你可以在Go函数中添加多个defer语句,当函数执行到最后时,这些defer语句会按照逆序执行(即最后一个defer语句将最先执行),最后该函数返回。
-
注意,defer语句是在return之后执行的
func test() (result int) { defer func() { result = 12 }() return 10 } func main() { fmt.Println(test()) // 12 }
3、panic() recover()
- panic()函数用于抛出异常,
- recover()函数用于捕获异常
func foo() {
panic(errors.New("i'm a bug"))
return
}
func test() (result int) {
defer func() {
//错误拦截 panic异常错误
if r := recover(); r != nil {
err := r.(error)
fmt.Println("Cache Exception:", err)
}
}()
foo()
return 10
}
func studyError() {
fmt.Println(test()) // 0
}
网友评论