Python爬虫、数据分析与可视化:工具详解与案例实战
上QQ阅读APP看书,第一时间看更新

4.1.1 处理异常的try…except从句

在如下的BadCode.py代码里,我们演示了不处理异常的后果。


01 empIDList = ['1','2','3']
02 empIDList.remove('4')
03 print('after remove')

运行上述代码,大家会发现运行到第2行时,由于待remove的元素不存在于empIDList里,因此直接终止了,并没有运行第3行的打印代码,同时还输出了异常信息。

这类程序终止的后果是比较严重的,比如我们要分析10个csv文件里的数据,在分析第1个时由于出现了异常而导致程序终止,那么后继9个文件都无法分析。我们预期的效果是,哪怕出现异常,也不能影响后继的进程,更不能让程序终止。

在这种场景里,我们就需要通过try…except来处理异常,在如下的TryDemo.py代码里,我们改写了上述流程,从中大家能看到try…except结构的基本用法。


01 empIDList = ['1','2','3']
02 try:
03     empIDList.remove('4')
04 except:
05     print('Could not Remove')
06 print('after remove')

第3行的remove语句被第2行和第4行的try…except所包含,这里的处理流程是:如果try所包含的代码块没出现异常,就不会进入except从句,但这里有异常,所以会进入。

在执行完except从句里第5行的print语句后,程序不会像之前那样直接终止,而是会继续执行,所以运行上述代码,大家能看到如下输出:


01 Could not Remove
02 after remove

在这里,通过try…except结构块,处理了异常,并避免了程序终止。