Задать вопрос
@r10d10

Какое исключение выбрать в python?

Тренируюсь с простейшим парсером
class ValidationError(Exception):
    pass

try:
    parserRes = requests.get('https://11qq.ru', headers)
except ValidationError:
    pass

print(parserRes.headers)


Пусть сайт не существует, в данном случае он не работает по https но это не важно в контексте вопроса. Мы имеем вывод с кучей ошибок, одна из них например:

6849d09b157f4707212028.jpeg

1. Как понять какое исключение кидать? Я посмотрел внимательно все ошибки и увидел как минимум 3 исключения:
SSLError
MaxRetryError
SSLCertVerificationError
Но в документации таких исключений нет https://docs.python.org/3/library/exceptions.html

2. Тела понятно нет т.к. сайт не работает, но почему parserRes.headers не даёт мне хотя бы заголовки ответа? Я бы мог их прочитать, понять по ним что сервер дал мне ответ 404 например и пойти дальше делать свои дела через

3. Пишут надо определить свой класс для обработки исключений с блекжеком и.... Сделано, в результате терминал всё насыпает кучу ошибок, т.е. этот класс почему-то не работает
  • Вопрос задан
  • 201 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
@r10d10 Автор вопроса
Ответ: это отдельная библиотека requests, поэтому у неё свои исключения есть, их надо искать отдельно. Следует сделать так:

try:
    parserRes = requests.get('https://11qq.ru', headers, timeout = 2, verify = True)
    parserRes.raise_for_status()
except requests.exceptions.HTTPError as errh:
    print("HTTP Error")
except requests.exceptions.RequestException as errex:
    print("Exception request")
    #print(errh.args)
except requests.exceptions.MissingSchema as errmiss:
    print("Missing schema: include http or https")
except requests.exceptions.ConnectionError as conerr:
    print("Connection error")
except requests.exceptions.ReadTimeout as errrt:
    print("Time out")

Так мы ловим все возможные исключения этой библиотеки
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы