上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结构块,处理了异常,并避免了程序终止。