【发布时间】:2014-03-04 11:40:56
【问题描述】:
我提到了这个问题 - 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 传递。
如何实现?
【问题讨论】:
-
t.TransObject["qty"].(map[string] interface{})["ticket fv"].(float64)之类的代码指出了正确建模域的一些重大问题。也许您可以尝试一个没有空接口的解决方案并键入不需要大量恐慌/延迟/恢复魔法的断言? -
补充一点:将错误作为字符串返回不是一个好习惯。创建您自己的错误类型
type MyError error并给它一个方法:func (m *MyError) Error() string- 这就是满足error接口所需的全部内容。阅读更多信息:blog.golang.org/error-handling-and-go
标签: go