@miteigi

Как не прерывать python при ошибках, которые не критичны для приложения?

try:
request = requests.get("недоступный домен", verify=False, timeout=10)
if request.status_code == 200:
print('Web site exists')
else:
print("Website returned response code: {code}".format(code=request.status_code))
except socket.timeout:
print('Web site does not exist')
continue;

Вываливается в ошибку из-за не доступного домена

raise ConnectTimeout(e, request=request)
requests.exceptions.ConnectTimeout: HTTPConnectionPool(host='www.valentinastomat.spb.ru', port=80): Max retries exceeded with url: / (Caused by ConnectTimeoutError(, 'Connection to www.valentinastomat.spb.ru timed out. (connect timeout=10)'))
  • Вопрос задан
  • 888 просмотров
Решения вопроса 1
@alex1478
Замените
except socket.timeout:
на
except requests.exceptions.ConnectTimeout:
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
adugin
@adugin Куратор тега Python
Прописывать некритичные для приложения exceptions явным образом в блоках try/except
Ответ написан
Комментировать
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Есть ещё удобный контекстный менеджер для подавления исключений в случаях, когда не требуется какой бы то ни было обработки.
from requests.exceptions import ConnectTimeout
from contextlib import suppress

with suppress(ConnectTimeout):
    # code
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы