我提到了这个问题 - 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贡献1772条经验 获得超6个赞
我认为这会做你想要的:
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 关注
- 175 浏览
添加回答
举报
0/150
提交
取消