Задать вопрос
@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. Пишут надо определить свой класс для обработки исключений с блекжеком и.... Сделано, в результате терминал всё насыпает кучу ошибок, т.е. этот класс почему-то не работает
  • Вопрос задан
  • 105 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 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")

Так мы ловим все возможные исключения этой библиотеки
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Everything_is_bad
Но в документации таких исключений нет https://docs.python.org/3/library/exceptions.html
потому что это исключения библиотеки requests, видно же в ошибке (и ошибку тоже надо текстом показывать, а не картинкой).

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

Пишут надо определить свой класс для обработки исключений с блекжеком и.... Сделано, в результате терминал всё насыпает кучу ошибок, т.е. этот класс почему-то не работает
где пишут? ты что не то читаешь или понимаешь, плюсом еще и код написал, но не понимаешь что он делает.

Ну и лучше прочитать учебник, а то у тебя сильно базовые вопросы и ошибки.
Ответ написан
Ваш ответ на вопрос

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

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