异常

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
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容