go 错误处理
在默认情况下,当发生错误后(panic),程序就会退出(崩溃)。
如果希望发生错误后程序还能继续运行就要做错误处理
使用defer+recover来捕捉和处理异常
- go语言追求简洁优雅,所有go不支持传统的try、catch、finally这种处理
- go中引入的方式是:defer、panic、recover
- go运行的时候抛出一个异常,通过defer通过recover来捕捉这个异常进行处理
package main import "fmt" func test() { // 使用defer+recover来捕捉和处理异常 defer func() { err := recover() // recover内置函数,可以捕捉到异常 if err != nil { //说明捕捉到错误 fmt.Println("ERROR:", err) } }() num1 := 10 num2 := 2 res := num1 / num2 fmt.Println(res) } func main() { test() }
使用自定义来处理错误
GO 程序中支持自定义错误,使用errors.New和panic内置函数
- errors.New("错误说明"),会返回个error类型的值,表示一个错误
- panic内置函数,接收一个interface{}类型的值(任何值)作为参数。可以接手error类型的变量,输出错误信息,并退出程序。
package main import ( "errors" "fmt" ) func readconf(name string) error { if name == "config.ini" { fmt.Println("读取文件中....") return nil } return errors.New("读取文件错误") } func main() { // test() err := readconf("config.ii") if err != nil { fmt.Println(err) } }