#python #exception #traceback
#python #исключение #обратная трассировка
Вопрос:
У меня есть этот код, и во второй ссылке он должен вызвать исключение 404.
Дело в том, что я получаю сообщение так, как я его закодировал, но также я получаю сообщение об обратном отслеживании, как будто что-то не так с моим кодом.
Это функция с именем «get_headers_if», а входные данные — либо response_url, либо response_url_2.
import requests
import json
def get_headers_if(response):
if response.status_code==200:
headers=response.headers
print("The headers for this URL:", response.url, "are: ",headers)
else:
raise Exception("Unexpected response (%s: %s)." % (response.status_code, response.reason))
response_url=requests.get("http://wikipedia.org")
response_url_2=requests.get("http://google.com/thehearthisflat")
get_headers_if(response_url)
get_headers_if(response_url_2)
Комментарии:
1. Второй URL-адрес не существует, верните 404. google.com/thehearthisflat . Проверьте URL еще раз
2. ПРИВЕТ. Я знаю, что его не существует. Из-за этого я хочу создать исключение. Это функция для обнаружения всего кода состояния ответа, отличного от 200.
Ответ №1:
Вы можете поднять статус и выполнить обработку исключений. Библиотека запросов по умолчанию предоставляет возможность проверять наличие кодов состояния и вызывать исключение. Вы можете изменить, что печатать при исключении, в инструкции печати исключения.
import requests
def get_headers_if(response):
try:
response.raise_for_status()
headers=response.headers
print("The headers for this URL:", response.url, "are: ",headers)
except requests.exceptions.HTTPError as err:
print("Unexpected response (%s)." % err)
response_url=requests.get("http://wikipedia.org")
response_url_2=requests.get("http://google.com/thehearthisflat")
get_headers_if(response_url)
get_headers_if(response_url_2)
Для получения более подробной информации: https://github.com/psf/requests/blob/b0e025ade7ed30ed53ab61f542779af7e024932e/requests/models.py#L937