go 错误处理
来源:原创
时间:2019-03-09
作者:脚本小站
分类:GoLang
error接口的使用:
package main import ( "errors" "fmt" ) func main() { var err1 error = fmt.Errorf("%s", "This is error1") err2 := fmt.Errorf("%s", "this is error2") fmt.Println("error = ", err1) fmt.Println("error = ", err2) // 一般情况下的使用方法 err3 := errors.New("This is error3") }
error接口的应用:
package main import ( "errors" "fmt" ) func Demo(a, b int) (result int, err error) { if b == 0 { err = errors.New("The b can not be zero") } else { result = a / b } return } func main() { result, err := Demo(12, 0) if err != nil { fmt.Println("error:", err) } else { fmt.Println("result = ", result) } }
panic的使用:输出致命错误,程序中断
package main import "fmt" func Demo() { fmt.Println("demo") } func Demo1() { panic("程序中断") fmt.Println("demo1") } func Demo2() { fmt.Println("demo2") } func main() { Demo() Demo1() Demo2() }
内部自动调用panic:
package main import "fmt" func Demo() { fmt.Println("demo") } func Demo1(n int) { var a [10]int a[n] = 666 // 当n越界之后内部会自动调用panic函数 } func Demo2() { fmt.Println("demo2") } func main() { Demo() Demo1(12) Demo2() }
recover:当程序有错误会中断,recover可以恢复中断的程序
package main import "fmt" func Demo() { fmt.Println("demo") } func Demo1(n int) { defer func() { // recover 恢复中断的程序,有错误时就会输出错误信息 if err := recover(); err != nil { fmt.Println(err) } }() var a [10]int a[n] = 666 // 当n越界之后内部会自动调用panic函数 } func Demo2() { fmt.Println("demo2") } func main() { Demo() Demo1(1) Demo2() }