error
在go语言中,异常被定义为实现了error接口的类型,error接口只定义了一个返回string类型Error()方法,任何实现了Error()方法的类型都可以被定义为异常,以下是一个自定义的异常类型:
type MyError struct {
data string
errNO int
errMsg string
}
// 定义错误方法
func (err *MyError) Error() string {
return err.errMsg
}
如果我们直接打印一个error对象,实际上调用的是error.Error()
panic
在通常情况下,向程序使用方报告错误状态的方式可以是返回一个额外的error类型值。
但是,当遇到不可恢复的错误状态的时候,如数组访问越界、空指针引用等,这些运行时错误会引起painc异常。这时,上述错误处理方式显然就不适合了。反过来讲,在一般情况下,我们不应通过调用panic函数来报告普通的错误,而应该只把它作为报告致命错误的一种方式。当某些不应该发生的场景发生时,我们就应该调用panic。
一般而言,当panic异常发生时,程序会中断运行,并立即执行在该goroutine(可以先理解成线程,在中被延