go FQA状态:
对于返回错误的函数,最好在其签名中始终使用错误类型(正如我们上面所做的那样),而不是像 *MyError 这样的具体类型,以帮助确保正确创建错误。例如,os.Open返回一个错误,即使不是 nil,它也总是具体类型*os.PathError。
但是这篇文章声称有时返回一个具体的类型是可以的:
(由于 Go FAQ 中讨论的原因,将错误的具体类型而不是错误传回通常是错误的,但在这里这样做是正确的,因为这
ServeHTTP
是唯一可以看到值并使用其内容的地方。)
我的问题是,使用返回error
而不是具体类型有什么好处,它如何帮助保证正确创建错误,以及为什么在不同地方不使用错误时返回具体类型是可以的?
森林海
相关分类