Go 语言基础——错误处理

学习目标

掌握错误处理函数

掌握自定义错误处理学习

掌握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  
}

自定义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语句error

defer语句的调用是遵守 先进后出的原则,即后一个defer语句将先被执行。

painc与recover

panic用于不能够恢复的错误

panic退出前会执行defer指定的内容

错误恢复

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

os.Exit 退出

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

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

相关文章
相关标签/搜索