Go 语言基础——错误处理

#### 学习目标 掌握错误处理 掌握自定义错误处理 掌握defer关键字的使用 ------ #### 错误处理 GO没有异常处理机制 Go语言引入了一个关于错误处理的标准模式,即error接口,该接口的定义如下: type error interface { ​ Error() string } 可以通过errors.New快速创建错误实例 ```go errors.New("错误信息") ``` ```go func Foo(param int)(n int, err error) { // ... } //调用时的代码建议按如下方式处理错误情况: n, err := Foo(0) if err != nil { // 错误处理 } else { // 使用返回值n } ``` #### 自定义error类型 #### defer关键字 ```go 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语句 defer语句的调用是遵照 先进后出的原则,即后一个defer语句将先被执行。 #### painc与recover #### panic用于不可以恢复的错误 panic退出前会执行defer指定的内容 错误恢复 ```go defer func() { if err :=recover();err != nil { //恢复错误 } }() ``` os.Exit 退出 os.Exit直接终止程序不会调用defer指定的函数 os.Exit退出时不会输出当前用调用栈信息 ------ **** 码字不易如果对你有帮助请给个关注**** **** 爱技术爱生活 QQ群: 894109590****
上一篇:Visual Studio 2012 使用免费的Team Foundation Service


下一篇:go defer原理