我是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
}
如果是,在调用函数时如何处理错误?
非常感谢
答案 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
}