我已经使用Go一段时间了,但还没有真正掌握如何处理错误。
即使是标准库也有许多不同的处理错误的方式(有些甚至不允许检查错误而必须采用字符串匹配)。
我最近读了Dave Cheney的博客文章Inspecting Errors。这似乎是朝着正确方向迈出的一步,但我仍然很难真正将其应用到实际中。
假设我已经创建了一个名为
调用
我的当前用例是实现自己的REST API,使用这个第一个包。在这种情况下,我希望能够分别返回
即使是标准库也有许多不同的处理错误的方式(有些甚至不允许检查错误而必须采用字符串匹配)。
我最近读了Dave Cheney的博客文章Inspecting Errors。这似乎是朝着正确方向迈出的一步,但我仍然很难真正将其应用到实际中。
假设我已经创建了一个名为
a
的包,该包对第三方REST API进行请求(例如Facebook Graph)。我希望这个包暴露与API相匹配的函数-比如说GetUser
。调用
GetUser
可能会有以下几种结果:
- 成功
- 由于第三方API失败而失败,例如API宕机
- 第三方API返回错误(例如找不到用户)
- 响应的反序列化或类似操作失败
我的当前用例是实现自己的REST API,使用这个第一个包。在这种情况下,我希望能够分别返回
200 OK
、503 Service Unavailable
、400 Bad Request
、500 Internal Server Error
响应,以响应可能的结果。如何在不必从包 a
返回HTTP响应代码或类似内容的情况下解决这个问题?