package main import ( "errors" "fmt" ) //错误处理 /* 1.在默认情况下,当发生错误后,程序就会退出 2.当发生错误后,可以捕获到错误,并进行处理,保证程序可以继续执行。 3.还可以在捕获错误后,给管理员一个提示。 defer,panic,recover Go抛出一个panic异常,然后在defer中通过recover捕获这个异常,正常处理 加入预警代码,可以让程序更加健壮 */ func test() { //处理异常 defer func() { err := recover() //可以捕获到异常 if err != nil { fmt.Println("err=", err) //可以将错误发送给管理员 } }() num1 := 10 num2 := 0 res := num1 / num2 //异常 fmt.Println("res=", res) } /* 自定义错误 Go程序中,支持自定义错误,使用errors.New和panic内置函数 errors.New("错误说明"),会返回一个error类型的值,表示一个错误 panic内置函数,接受一个interface{}类型的值作为参数,可以接受error类型的变量,输出错误信息并退出程序 */ //函数读取配置文件init.conf的信息 //如果文件名传入不正确,我们就返回一个自定义的错误 func readConf(name string) (err error) { if name == "config.ini" { //读取 return nil } else { //返回一个自定义的错误 return errors.New("文件读取错误") } } func test02() { err := readConf("config2.ini") if err != nil { //如果读取文件发送错误,就输出这个错误并终止程序 panic(err) } fmt.Println("test02()继续执行") } func main() { test() test02() fmt.Println("后续~") }