我一直使用:
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
除了可以在此级别测试各种其他错误之外,一种方法是否比另一种更好?
Response.raise_for_status()
只是一种用于检查状态码的内置方法,基本上与您的第一个示例相同。
这里没有“更好”的地方,只是具有流量控制的个人偏好。我更倾向于尝试try / except块来捕获任何调用中的错误,因为这会通知将来的程序员这些条件是某种错误。扫描代码时,if / else不一定表示错误。