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)
}