Go 语言基础——错误处理

Posted freeoldman

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go 语言基础——错误处理相关的知识,希望对你有一定的参考价值。

学习目标

掌握错误处理

掌握自定义错误处理

掌握defer关键字的使用


错误处理

GO没有异常处理机制

Go语言引入了一个关于错误处理的标准模式,即error接口,该接口的定义如下:
type error interface

? Error() string

可以通过errors.New快速创建错误实例

errors.New("错误信息")
func Foo(param int)(n int, err error)      
    // ...  
 

//调用时的代码建议按如下方式处理错误情况: 
n, err := Foo(0)  
 
if err != nil     
    // 错误处理 
 else     
    // 使用返回值n  
 

自定义error类型

defer关键字

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指定的内容

错误恢复

defer func() 
    if err :=recover();err != nil  
    //恢复错误
    
()

os.Exit 退出

os.Exit直接终止程序不会调用defer指定的函数

os.Exit退出时不会输出当前用调用栈信息


**** 码字不易如果对你有帮助请给个关注****

**** 爱技术爱生活 QQ群: 894109590****

以上是关于Go 语言基础——错误处理的主要内容,如果未能解决你的问题,请参考以下文章

GO语言学习(十九)Go 错误处理

Golang✔️走进 Go 语言✔️ 第十九课 错误处理 & 时间处理

Golang✔️走进 Go 语言✔️ 第十九课 错误处理 & 时间处理

2Go语言错误处理

2Go语言错误处理

Go语言开发Go语言错误处理