Golang错误处理:理解恐慌

时间:2015-01-29 23:07:27

标签: go

我是Go的新手,我正在努力掌握panic功能。

到目前为止,我一直在使用这种类似的语法来处理程序中的错误:

func Find(i int) (item, error) {
  // some code

  if (not found) {
    return nil, errors.New('Not Found')
  }

  // if found:
  return myItem, nil

}

然后我偶然发现了panic函数。我很难理解它。是否有可能在return语句中删除error并执行类似的操作?

func Find(i int) item {
  // some code

  if (not found) {
    panic('Not found')
  }

  return myItem

}

如果是,在调用函数时如何处理错误?

非常感谢

1 个答案:

答案 0 :(得分:0)

您想使用recover功能。

func Find(i int) item {
    defer func() {
        if e := recover(); e != nil {
            // e is the interface{} typed-value we passed to panic()
            fmt.Println("Whoops: ", e) // Prints "Whoops: Not Found"
        }
    }()

    if (not found)
    {    panic("Not Found")
    }

    return myItem
 }       

参考:http://blog.denevell.org/golang-panic-recover.html