Python 请求模块中的 Try/Except 错误处理
在 Python 中使用 Requests 模块是处理 API 调用和 HTTP 请求的便捷方法。当请求执行期间发生错误时,必须有强大的错误处理能力。
此代码正确吗?
try: r = requests.get(url, params={'s': thing}) except requests.ConnectionError, e: print(e)
此代码尝试通过处理 ConnectionError 异常来仅捕获与连接相关的错误。但是,这并没有涵盖 Requests 模块可能遇到的所有可能的错误场景。
构建错误处理的更好方法
为了确保处理所有潜在的错误,建议捕获异常基类 requests.exceptions.RequestException,而不是像 ConnectionError 这样的特定异常。
try: r = requests.get(url, params={'s': thing}) except requests.exceptions.RequestException as e: # This is the correct syntax raise SystemExit(e)
或者,您可以单独处理特定异常并相应地采取不同的操作。例如,您可以以不同于连接错误的方式处理超时。
try: r = requests.get(url, params={'s': thing}) except requests.exceptions.Timeout: # Maybe set up for a retry, or continue in a retry loop except requests.exceptions.TooManyRedirects: # Tell the user their URL was bad and try a different one except requests.exceptions.RequestException as e: # catastrophic error. bail. raise SystemExit(e)
捕获 HTTP 错误
如果您希望引发 HTTP 错误(例如 401 Unauthorized)的异常,您可以使用 Response.raise_for_status() 方法。
try: r = requests.get('http://www.google.com/nothere') r.raise_for_status() except requests.exceptions.HTTPError as err: raise SystemExit(err)
通过彻底处理异常并根据错误类型自定义行为,您可以确保您的代码在 HTTP 请求期间正确响应错误和用户输入.
以上是如何有效处理Python请求模块中的错误?的详细内容。更多信息请关注PHP中文网其他相关文章!