Вызывать исключение без текста обратной трассировки для HTTP-веб-запросов

#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