urllib —— 处理异常

处理异常

URLError

URLError类来自urllib库的error模块(urllib.error.URLError),它继承自OSError类,是error异常模块的基类,处理由request模块产生的异常。

1
2
3
4
5
6
7
from urllib import request, error

try:
response = request.urlopen('https://www.baidu.com')
except error.URLError as e:
print(e.reason)
# [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:847)

HTTPError

HTPError是URLError的子类,专门用来处理HTTP请求的错误,它有3个属性:

  • code:返回HTTP状态码
  • reason:同父类一样返回错误的原因
  • headers:返回请求头

特性:因为URLError是HTTPError的父类,所以先捕获子类的错误再捕获父类错误

1
2
3
4
5
6
7
8
9
10
from urllib import error,request

try:
response = request.urlopen('https://www.baidu.com')
except error.HTTPError as e:
print(e.reason,e.code,e.headers,sep='\n')
except error.URLError as e:
print(e.reason)
else:
print('Request Successfully')