我提到了這個(gè)問題 - 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 }因?yàn)閑rr我需要拋出的錯(cuò)誤消息,例如,如果解析邏輯失敗,它會自動拋出錯(cuò)誤。這就是我需要抓住的錯(cuò)誤。我只是舉例說明這一點(diǎn) - 無論運(yùn)行時(shí)異常是什么,我都需要捕獲它并作為err返回值傳遞。如何做到這一點(diǎn)?
3 回答

夢里花落0921
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
我認(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)注
- 212 瀏覽
添加回答
舉報(bào)
0/150
提交
取消