我有一个函数 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
...
}
- 2 回答
- 0 关注
- 187 浏览
添加回答
举报
0/150
提交
取消