как создать исключение в Python - PullRequest
0 голосов
/ 18 февраля 2019

Мне все еще трудно узнать, когда и как использовать исключения в python.В настоящее время я использую запросы для получения контента по ссылке, иногда мне нужно использовать http auth:

if auth_is_needed:
    resp = requests.get(url, auth=(auth['user'], auth['password']))
else:
    resp = requests.get(url)

1) Я мог бы просто потом выполнить простой if / else для проверки кода состояния:

if resp.status_code not 200:
    print('Could not fetch content from the url')

2) Я также мог бы выдвинуть здесь исключение, например:

if resp.status_code not 200:
    print('Could not fetch content from the url')
    raise Exception('for the url was returned a wrong status code')

3) Но я думаю, я должен сделать это с помощью try / catch.Но тогда, я должен сделать это два раза как:

if auth_is_needed:
    try:
        resp = requests.get(url, auth=(auth['user'], auth['password']))
        resp.raise_for_status()
    except requests.exceptions.HTTPError as error:
        print(error)
else:
    try:
        resp = requests.get(url)
        resp.raise_for_status()
    except requests.exceptions.HTTPError as error:
        print(error)

4) Или я должен поместить все в один блок, как:

try:
    if auth_is_needed:
        resp = requests.get(url, auth=(auth['user'], auth['password']))
    else:
       resp = requests.get(url)
except requests.exceptions.HTTPError as error:
    print(error)

Итак, почему 1) и 2)плохой?Они выглядят намного проще.И разве это не плохой стиль - помещать много кода в блок try, как в 4)?Но должен ли я действительно повторить то же самое, что и в 3)?

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