【发布时间】:2021-10-05 09:22:38
【问题描述】:
我正在 Go 中制作一个 json 解组错误处理函数:
import "github.com/pkg/errors"
func parseJSONError(err error) {
var uterr json.UnmarshalTypeError
if errors.As(err, &uterr) {
//...
return
}
var serr json.SyntaxError
if errors.As(err, &serr) {
//...
return
}
}
但是errors.As():panic: errors: *target must be interface or implement error有一个恐慌。
我们可以从github.com/pkg/errors documentation中了解到什么目标:
func As(err error, target interface{}) bool
问题在于json.UnmarshalTypeError 和json.SyntaxError 实际上都实现了error 接口。我们可以向encoding/json documentation学习。所以我不知道我做错了什么。即使将 uterr 和 serr 显式转换为 interface{} 也无法挽救这种情况。
恐慌发生在github.com/pkg/errors 和标准errors 包中。
【问题讨论】:
标签: go error-handling