购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 异常处理

在实现网络请求时,可能会出现很多异常错误,urllib模块中的urllib.error子模块包含了URLError与HTTPError两个比较重要的异常类。

实例2.10 处理URLError异常

(实例位置:资源包\Code\02\10)

URLError类提供了一个reason属性,通过这个属性可以了解错误的原因。例如,向一个不存在的网络地址发送请求,然后调用reason属性查看错误原因。示例代码如下:

程序运行结果如下:

HTTPError类是URLError类的子类,主要用于处理HTTP请求所出现的异常,该类有以下3个属性:

☑ code:返回HTTP状态码。

☑ reason:返回错误原因。

☑ headers:返回请求头。

实例2.11 使用HTTPError类捕获异常

(实例位置:资源包\Code\02\11)

使用HTTPError类捕获异常的示例代码如下:

程序运行结果如下:

实例2.12 双重异常的捕获

(实例位置:资源包\Code\02\12)

由于HTTPError是URLError的子类,有时HTTPError类会有捕获不到的异常,所以可以先捕获子类HTTPError的异常,再捕获父类URLError的异常,这样可以起到双重保险的作用。示例代码如下:

程序运行结果如下:

说明

从以上的运行结果中可以看出,此次超时(timeout)异常是由第二道防线URLError所捕获的。 kk442cb1/Zz9zmwDDSr9hk6cKrd9QDMODuLrpuEGHrZUgE2uFOV5rqrgF9+FQVAm

点击中间区域
呼出菜单
上一章
目录
下一章
×