Go语言教程之边写边学:golang中捕获panic
Golang官方包使用panic/defer+recover作为throw/catch,但只有在需要展开大型调用堆栈时才会使用。"惯用"的解决方案是在使用参数之前检查参数。
当程序崩溃时,当前函数将停止运行,并且程序会打印日志消息并崩溃。
您只需调用内置的panic函数即可自行引起恐慌。
示例代码:
package main
import (
"errors"
"fmt"
)
var result = 1
func chain(n int) {
defer func() {
if r := recover(); r != nil {
fmt.Println(r)
}
}()
if n == 0 {
panic(errors.New("Cannot multiply a number by zero"))
} else {
result *= n
fmt.Println("Output: ", result)
}
}
func main() {
chain(5)
chain(2)
chain(0)
chain(8)
}
系列文章