我提到了這個問題 - os.Error - string value (Golang),但這在我的情況下不起作用。func (t Trans) TicketQty() (intQty int, err string) { defer func() { str := recover() if(str != nil){ err = "an error" } }() Qty := t.TransObject["qty"].(map[string] interface{})["ticket fv"].(float64) intQty = 10 return }因為err我需要拋出的錯誤消息,例如,如果解析邏輯失敗,它會自動拋出錯誤。這就是我需要抓住的錯誤。我只是舉例說明這一點 - 無論運行時異常是什么,我都需要捕獲它并作為err返回值傳遞。如何做到這一點?
3 回答

夢里花落0921
TA貢獻(xiàn)1772條經(jīng)驗 獲得超6個贊
我認(rèn)為這會做你想要的:
func (t Trans) TicketQty() (intQty int, err error) {
defer func() {
ex := recover()
if(ex != nil){
// "%v" prints the value of ex
// for strings, it is the string, for errors .Error() method, for Stringer the .String() etc
// Errorf returns an error instead of a string
err = fmt.Errorf("%v", ex)
}
}()
... // do your thing
return
}
- 3 回答
- 0 關(guān)注
- 205 瀏覽
添加回答
舉報
0/150
提交
取消