当前位置: 首页 > 知识库问答 >
问题:

我应该为REST API错误引发哪个异常?

尹凌龙
2023-03-14

我正在用Python编写一个简单的API客户端,我想知道如果远程服务器不满意,我应该引发什么异常

API本身的文档记录非常糟糕(我不知道所有可能的错误消息,所以我不能为所有这些消息定义自定义类),我让请求处理HTTP级别的错误,在这些情况下会引发HTTPError,但是如果服务器在JSON响应中只提供error键,我应该引发什么呢?

我目前使用的是Exception,但感觉非常广泛,我想知道是否有更好的替代方案。

问候。

共有1个答案

上官霄
2023-03-14

是的,仅仅引发Exc0019可能过于宽泛。

通常一个模块应该定义他自己的基本异常类:

class MyAPIClientError(Exception):
    pass

然后您可以将其子类化:

class RemoteServerNotHappyError(MyAPIClientError):
    pass

可能应该提到服务器的json返回的API客户端类所不期望的内容。在您认为合适的时候添加相关的错误信息。

这意味着你的库的用户可以捕获这些特定的异常(他们可能知道如何处理),而不必捕获每个异常(他们肯定不知道如何处理每个可能的失败模式)。

 类似资料:
  • 问题内容: 我想知道在Python中指示无效参数组合的最佳做法。我遇到过几种情况,其中您具有这样的功能: 唯一的烦恼是每个包装都有自己的包装,通常略有不同。我知道在Java中存在-是否众所周知每个人都将在Python中创建自己的s还是存在另一种首选方法? 问题答案: 我只会提出ValueError,除非您需要更具体的例外。 这样做真的没有意义-您的自定义类的用法与ValueError相同,那么为什

  • 我目前正在一个后端有Spring,前端有Angularjs的网站上工作,我们已经讨论了后端响应以处理前端的消息对话框,我有一个问题要问: 假设我有一个API: 若客户机发出一个带有无效参数(如字符串)的请求,那个么应该从服务器返回哪个响应代码?HTTP 400错误的请求和响应正文包含消息“fromTime和toTime应采用时间戳格式”,还是HTTP 200包含相同的消息? 我看到了一些Googl

  • 然而,系统的规模越来越大,可能会出现一个错误,即未经授权的用户会通过控制器层,试图通过自定义授权服务访问受保护的数据。 一方面,最适合的异常似乎是(Http 403),但另一方面,抛出500或404以“隐藏”所请求资源的存在可能是更安全的方法。 我考虑了以下例外情况: null

  • 问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我正在重写一个项目以使用Node.js。我想继续使用MySQL作为数据库(即使我不介意重写架构)。我正在寻找一种易于使用,性能合理的ORM,它支持缓存,多对一

  • 问题内容: 我正在使用AWS JS SDK提供的承诺。创建包装AWS开发工具包的异步函数时的要点如下: 有人联系我,他说我永远不要在这类基于promise的函数中抛出错误。他们建议改为返回。老实说,我对承诺的了解还不是很深,所以他们的解释有点让我震惊。 问题答案: 他们是正确的。 调用假定始终都会返回一个承诺(并分别处理已解决和拒绝的承诺)。当您引发错误时,该函数不会返回promise。 您 可以

  • 问题内容: 在这个问题中,如何在C 11中有效地选择标准库容器?是选择C 集合时要使用的便捷流程图。 我认为对于那些不确定应该使用哪个集合的人来说,这是一个有用的资源,因此我试图找到类似的Java流程图,但未能做到。 哪些资源和“备忘单”可用来帮助人们选择使用Java进行编程时使用的正确Collection?人们如何知道应该使用哪些List,Set和Map实现? 问题答案: 由于找不到相似的流程图