何时使用“ raise_for_status”与“ status_code”测试

问题描述 投票:0回答:1

我一直使用:

r = requests.get(url)
if r.status_code == 200:
    # my passing code
else:
    # anything else, if this even exists

现在我正在处理另一个问题,并决定允许其他错误,而是现在使用:

try:
    r = requests.get(url)
    r.raise_for_status()
except requests.exceptions.ConnectionError as err:
    # eg, no internet
    raise SystemExit(err)
except requests.exceptions.HTTPError as err:
    # eg, url, server and other errors
    raise SystemExit(err)
# the rest of my code is going here

除了可以在此级别测试各种其他错误之外,一种方法是否比另一种更好?

python python-3.x error-handling python-requests
1个回答
0
投票

Response.raise_for_status()只是一种用于检查状态码的内置方法,基本上与您的第一个示例相同。

这里没有“更好”的地方,只是具有流量控制的个人偏好。我更倾向于尝试try / except块来捕获任何调用中的错误,因为这会通知将来的程序员这些条件是某种错误。扫描代码时,if / else不一定表示错误。

© www.soinside.com 2019 - 2024. All rights reserved.