package main
import (
"fmt"
"errors"
)
func test() {
defer func() {
err := recover() // 使用内置函数recover()得到返回的错误
if err != nil {
fmt.Println("发生了错误并捕获")
}
}()
num1 := 1
num2 := 0
num3 := num1 / num2 // 如果没有defer ... recover 机制这里会执行出错
fmt.Println("funtion test over,num3:", num3)
}
func test2(name string) (err error){
if name != "right_name" {
return errors.New("name is incorrect")
// errors.New()返回一个错误
}
fmt.Println("test2 do something")
return nil
}
func main() {
fmt.Println("hello world")
test()
fmt.Println("main over")
/*
hello world
发生了错误并捕获
main over
*/
// 自定义错误
ret := test2("hello")
if ret != nil {
fmt.Println("test2 error:", ret)
panic(ret)
}
fmt.Println("main over2")
/*
test2 error: name is incorrect
panic: name is incorrect
goroutine 1 [running]:
main.main()
E:/code/go/src/pro8/main.go:47 +0x189
*/
}
GO_错误and自定义错误
最新推荐文章于 2023-10-19 10:29:17 发布