错误处理
错误要点
- Go语言追求简洁优雅,所以,Go语言不支持传统的try…catch…finally
- Go中引入的处理方式为:defer、panic、recover
- Go中可以抛出一个panic的一次,然后再defer中通过recover捕获这个异常,然后正常处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| package main
import ( "fmt" )
func test() { defer func() { err := recover() if err != nil { fmt.Println("err = ", err) } }()
var num1 = 10 var num2 = 0 var res = num1 / num2
fmt.Println("res = ", res) }
func main() { test()
fmt.Println("异常之后.....") }
|
自定义错误
Go程序中,自定义错误使用error.New和panic内置函数处理。
errows.New(“错误说明”),会返回一个error类型的值,表示一个错误
panic内置函数,接收一个interface{}类型的值(也就是任何值)作为参数。可以接收error类型的变量,输出错误信息,并退出程序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| package main
import ( "fmt" "errors" )
func test2(i int) (err error) { if i == 1 { return nil } else { return errors.New("自定义错误...") } }
func main() { err := test2(2) if err != nil { panic(err) }
fmt.Println("异常之后.....") }
|