为 HTTP Web 请求引发没有回溯文本的异常

Raise Exception without traceback text for HTTP web requests

我有这段代码,在第二个 link 它应该引发异常 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)

您可以提出状态并进行异常处理。默认情况下,请求库提供了一个选项来检查状态代码并引发异常。您可以在异常打印语句中修改异常打印的内容。

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