Golang中不支持try…catch…finally这种错误处理机制。而引入的处理方式是:
defer,panic,recover,请看示例:
func test(){ defer func(){ err := recover() //内置函数,可以捕获异常 if err != nil { fmt.Println(“error=”,err) } }() num1 := 10 num2 := 0 fes :=num1/num2 fmt.Println(“this will not print”) } |
自定义错误:
可以使用errors.New和panic内置函数;
error.New(“错误说明”),会返回一个error类型的值,表示一个错误;
panic内置函数,接收一个interface{}类型的值(也就是任意值)作为参数。当然,就可以接收error类型的变量,输出错误信息,并退出程序。案例:
func readConf(name string) (err error){
if name == “ok.ini” {
return nil
} else {
return errors.New(“读取文件错误”)
}
}
func test(){
if err := readConf(“fail.ini”); err != nil {
panic(err) //这里会在屏幕中输出panic:”读取文件错误”,并退出程序
}
fmt.Println(“test continue run……”)
}