错误处理

go语言没有异常,为了代码的优雅,也没有传统的try catch finally语法

package main

import "fmt"

func main() {
	div(1, 0)
	fmt.Println("--- main执行完毕 ---")
}

func div(a, b int) int {
	return a / b
}

执行结果:

panic: runtime error: integer divide by zero   # 发生了一个panic(致命错误),会引发程序停止

goroutine 1 [running]: # 打印堆栈信息
main.div(...) 
        /Users/yangsx/Project/notes-golang/go语言圣经/练习答案/5. 函数/5.10 Recover捕获异常/练习 5.19/main.go:11
main.main()
        /Users/yangsx/Project/notes-golang/go语言圣经/练习答案/5. 函数/5.10 Recover捕获异常/练习 5.19/main.go:6 +0x12

为了程序正常运行,我们需要对错误进行处理。

defer、panic、recover

  • panic抛出错误

  • recoverdefer中捕获错误

defer + recover 在方法内抓取错误

panic抛出自定义错误

返回错误并交给调用方处理

代码预警,判断参数是否复合标准,否则创建一个自定error并返回

最后更新于

这有帮助吗?