异常

作者: BridgeXD | 来源:发表于2019-04-18 08:24 被阅读0次

    1、error接口

    func foo(param int)(ret int, err error)
    {
       error := errors.New("发生错误咯")
        ...  
    } 
    
    //调用
    n, err := foo(0)
    if err != nil {
        //  错误处理
    } else {
        // 使用返回值n
    }
    

    2、defer

    你可以在Go函数中添加多个defer语句,当函数执行到最后时,这些defer语句会按照逆序执行(即最后一个defer语句将最先执行),最后该函数返回。

    • 注意,defer语句是在return之后执行的

      func test() (result int) {
        defer func() {
        result = 12
      }()
        return 10
      }
      
      func main() {
        fmt.Println(test())     // 12
      }
      

    3、panic() recover()

    • panic()函数用于抛出异常,
    • recover()函数用于捕获异常
    func foo() {
        panic(errors.New("i'm a bug"))
        return
    }
    
    func test() (result int) {
      defer func() {
          //错误拦截 panic异常错误
          if r := recover(); r != nil {
            err := r.(error)
            fmt.Println("Cache Exception:", err)
        }
      }()
      foo()
      return 10
    }
    
    func studyError() {
      fmt.Println(test()) // 0
    }

    相关文章

      网友评论

          本文标题:异常

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