为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
紫衣仙女 2021-06-22 09:10:28
我有一个函数 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 中,并使代码更易于阅读和维护。
查看完整描述

2 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

你想要的是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

    ...

}


查看完整回答
反对 回复 2021-06-28
  • 2 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信