Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过SSLError处理异常请求_Python_Error Handling - Fatal编程技术网

Python 通过SSLError处理异常请求

Python 通过SSLError处理异常请求,python,error-handling,Python,Error Handling,这是我检查链接的功能。但是当链接是假的时,它会抛出一个错误。例如,它适用于twitter.com,但不适用于twitt.com class Quality_Check: def check_broken_link(self,data): url= requests.head(data) try: if url.status_code==200 or url.status_code==302 or url.status_code==

这是我检查链接的功能。但是当链接是假的时,它会抛出一个错误。例如,它适用于twitter.com,但不适用于twitt.com

class Quality_Check:
    def check_broken_link(self,data):
        url= requests.head(data)

        try:
            if url.status_code==200 or url.status_code==302 or url.status_code==301:
                return True
        except requests.exceptions.SSLError as e:
            return False

qc=Quality_Check()
print(qc.check_broken_link('https://twitte.com'))
当我尝试使用此方法处理异常时,会显示以下错误:

Traceback (most recent call last):
      ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)
在处理上述异常期间,发生了另一个异常:

raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='twitte.com', 
port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, 
'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)'),))
另一个也出现了

requests.exceptions.SSLError: HTTPSConnectionPool(host='twitte.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)'),))

异常发生在
url=requests.head(data)
行。因此,您应该将该行包括在
中,并尝试这样做:

class Quality_Check:
    def check_broken_link(self,data):
        try:
            url = requests.head(data)
            if url.status_code == 200 or url.status_code == 302 or url.status_code == 301:
                return True
        except requests.exceptions.SSLError as e:
            return False

qc=Quality_Check()
qc.check_broken_link('https://twitte.com')
返回
False
,并在
上返回'https://twitter.com“
它返回
True
,这是所需的结果


顺便说一句,你可以改变你的路线

if url.status_code == 200 or url.status_code == 302 or url.status_code == 301:


那么你的问题是什么?如何处理异常?如何处理异常?我的问题是如何处理这些异常?当然,请参阅下面的答案。我的答案有效吗?
if url.status_code in (200, 302, 301):