我有一個函數(shù) A 調(diào)用函數(shù) B,它有時會根據(jù)無效數(shù)據(jù)調(diào)用恐慌。在函數(shù)A defer 函數(shù)中,我想知道傳遞給panic() 的消息函數(shù)B,以便我可以通過網(wǎng)絡將json 中的錯誤報告回客戶端。例如func A( abc data) result string{ defer func(){ // get panic args and return result. } xx = B( abc[0] ); yy = B( abc[1] ); ...}函數(shù) B 使用 panic 的原因是為了避免大量的err := B(abc)if err != nil { ...}在函數(shù) A 中,并使代碼更易于閱讀和維護。
2 回答

慕桂英4014372
TA貢獻1871條經(jīng)驗 獲得超13個贊
你想要的是recover功能。您想要推遲它是正確的 - 恢復僅在延遲函數(shù)中正常工作(如果您在主體中調(diào)用它,如果沒有恐慌,它將返回 nil,或者在恐慌發(fā)生時被跳過)。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 關(guān)注
- 215 瀏覽
添加回答
舉報
0/150
提交
取消