Когда использовать тестирование `нять_для_статуса` против `статуса_кода` - PullRequest
0 голосов
/ 27 апреля 2020

Я всегда использовал:

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

За исключением того, что Различные другие ошибки могут быть проверены на этом уровне, один метод лучше, чем другой?

1 Ответ

0 голосов
/ 27 апреля 2020

Response.raise_for_status() - это просто встроенный метод проверки кодов состояния, который выполняет практически то же самое, что и ваш первый пример.

Здесь нет «лучше», просто личные предпочтения с контролем потока. Я предпочитаю блокировать / исключать блоки для перехвата ошибок при любом вызове, поскольку это сообщает будущему программисту, что эти условия являются своего рода ошибкой. Если / else не обязательно указывает на ошибку при сканировании кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...