美文网首页
错误与恢复

错误与恢复

作者: Caesar_emperor | 来源:发表于2019-09-26 09:24 被阅读0次

    panic和recover

    一.声明
    func panic(interface{}) //尽量少用
    func recover()interface{}

    二.panic
    1)error
    定义:
    接口的定义如下:

    type error interface{   
        Error() string

    对于大部分函数来说,返回错误基本上都可以定义为:

    func FOO(param int)(n int,err error){
        ... ...
    }

    一般使用

    func main(){   
        n,err:=FOO(0)   
         if err!=nil{       
            //错误处理   
         }else{
        //使用返回值n    
        }
    }

    底层使用:
    这里暂不做介绍

    2)panic(当出现不可修复性错误的情况下使用, 可以中断原有的控制流程)

    如判断登录用户是否是root

    var user = os.Getenv("USER")
    func  isRoot(){
         if user!="root"{
            panic("no value for $USER")
        }
    }

    三.recover(从panic状态恢复回来,但只在defer内直接调用才有效)

    func main(){
        test()
    }
    func test(){
        defer func(){
            fmt.Println(recover())    
        }()
    }

    **其余用法,如:defer函数内的嵌套函数间接调用recover,或defer直接调用defer都是返回nil, 无效的

    相关文章

      网友评论

          本文标题:错误与恢复

          本文链接:https://www.haomeiwen.com/subject/jeyksctx.html