掌握错误处理函数
掌握自定义错误处理学习
掌握defer关键字的使用code
GO没有异常处理机制接口
Go语言引入了一个关于错误处理的标准模式,即error接口,该接口的定义以下: type error interface {string
Error() stringit
}io
能够经过errors.New快速建立错误实例class
errors.New("错误信息")
func Foo(param int)(n int, err error) { // ... } //调用时的代码建议按以下方式处理错误状况: n, err := Foo(0) if err != nil { // 错误处理 } else { // 使用返回值n }
func CopyFile(dst, src string) (w int64, err error) { srcFile, err := os.Open(src) if err != nil { return } defer srcFile.Close() dstFile, err := os.Create(dstName) if err != nil { return } defer dstFile.Close() return io.Copy(dstFile, srcFile) }
相似于Java中的finally程序
一个函数中能够存在多个defer语句error
defer语句的调用是遵守 先进后出的原则,即后一个defer语句将先被执行。
panic用于不能够恢复的错误
panic退出前会执行defer指定的内容
错误恢复
defer func() { if err :=recover();err != nil { //恢复错误 } }()
os.Exit 退出
os.Exit直接终止程序不会调用defer指定的函数
os.Exit退出时不会输出当前用调用栈信息