猿问

在 GO lang 的 defer 函数中获取 panic() 参数

我有一个函数 A 调用函数 B,它有时会根据无效数据调用恐慌。在函数A defer 函数中,我想知道传递给panic() 的消息函数B,以便我可以通过网络将json 中的错误报告回客户端。


例如


func A( abc data) result string{

  defer func(){

    // get panic args and return result.

  }


  xx = B( abc[0] );

  yy = B( abc[1] );

  ...

}

函数 B 使用 panic 的原因是为了避免大量的


err := B(abc)

if err != nil {

    ...

}

在函数 A 中,并使代码更易于阅读和维护。


紫衣仙女
浏览 188回答 2
2回答

慕桂英4014372

你想要的是recover功能。您想要推迟它是正确的 - 恢复仅在延迟函数中正常工作(如果您在主体中调用它,如果没有恐慌,它将返回 nil,或者在恐慌发生时被跳过)。Recover 返回在空接口中恐慌的值:func A(abc data) result string {    defer func() {        p := recover() // p is an interface{} value, and will be nil if there was no panic    }() // You have to call the function    ...}
随时随地看视频慕课网APP

相关分类

Go
我要回答