package main
import(
"fmt"
"time"
)
func test(){
//使用defer + recover 来捕获 和 处理异常
//捕获到异常后,代码不会停止 会 继续往下执行
defer func(){
err := recover() // recover()内置函数,可以捕获到异常
if err != nil{ //说明捕获到错误
fmt.Println("err = ",err)
//这里就可以将错误信息发生给管理员。。。
fmt.Println("发生邮件给admin管理员。。。。")
}
}()
num1 := 10
num2 := 0
res := num1 / num2
fmt.Println("res = ",res)
}
func main(){
test()
for{
fmt.Println("test()方法后执行的内容。。。。。")
time.Sleep(time.Second)
}
}
终端输出
err = runtime error: integer divide by zero
发生邮件给admin管理员。。。。
test()方法后执行的内容。。。。。
test()方法后执行的内容。。。。。
自定义错误;
package main
import(
"fmt"
"errors"
)
//(err error) err 是返回的变量
func readConf(name string) (err error) {
if name == "config.ini"{
return nil
} else {
//自定义错误信息
return errors.New("文件读取错误。。。。")
}
}
func test(){
err := readConf("config1.ini")
if err != nil {
//内置函数 输出错误 并且终止程序运行
panic(err)
}
fmt.Println("程序执行中。。。。。。。")
}
func main(){
test()
fmt.Println("程序执行中1。。。。。。。")
}