如果同时返回非零值和非零错误是否是常规的,我无法找到一个好的确认。例子:
func makeHTTPCall(...) string, error {
resp, err := http.Post(...)
if err != nil {
return "", err
}
var r string
if resp.StatusCode == http.StatusOK {
if err := json.NewDecoder(resp.Body).Decode(&r); err != nil {
return "", err
}
if err := resp.Body.Close(); err != nil {
// should I return error here even if I have successful result?
// or should I return both non-nil value and non-nil error?
// or should i just log the error?
}
return r, nil
}
}
绝对是编译器允许的。为什么我要问是因为约定首先检查错误。如果我返回非零值和错误,客户端代码将首先检查错误并继续错误处理路径:
str, err := makeHTTPCall(...)
if err != nil {
throw err
}
是否有任何协议?
拉丁的传说
慕娘9325324
慕标5832272
相关分类