在对透明消耗的一个或多个HTTP API提供抽象的类进行编码时,在HTTP 404
或类似的服务请求结束时引发的适当异常是什么?
该类旨在作为消费者的复合对象,这些消费者可以高度概述正在使用的服务,但会理解API访问级别的失败的特定异常。当然,总是可以编写和引发自定义异常对象:
class WebServiceUnresponsive(Exception):
pass
但是经历Standard Python Exceptions,我不确定我是否会忽视合适的候选人。如果不是这样,最佳做法是什么?
答案 0 :(得分:1)
使用requests
:
requests.exceptions包含大量内置HTTP异常,并包含一个特定的response.raise_for_status(),它可以为您完成所有繁重工作(例如来自链接):
>>> bad_r = requests.get('http://httpbin.org/status/404')
>>> bad_r.status_code
404
>>> bad_r.raise_for_status()
Traceback (most recent call last):
File "requests/models.py", line 832, in raise_for_status
raise http_error
requests.exceptions.HTTPError: 404 Client Error
如果您没有直接使用请求,可以from requests import exceptions
然后自己投票。
if exception_encountered(req):
raise exceptions.HTTPError("Got a 404 yo... server says there's nothing there :(")