上节练习模块
练习回顾:请大家尝试着叙述一下try-except-else代码块的工作原理。
练习分析:只需要了解内部具体如何执行即可。
练习详解:python尝试执行try代码块中的代码;只有可能引发异常的代码才需要放在try语句中。有时候,有一些仅在try代码块成功执行时才需要运行的代码;这些代码应放在else代码块中。except代码块告诉python,如果它尝试运行try代码块中的代码时引发了指定的异常,该怎么办?
通过预测可能发生错误的代码,可编写健壮的程序,它们即便面临无效数据或缺少资源,也能继续运行,从而能够抵御无意的用户错误和恶意攻击。
处理FileNotFoundError异常
使用文件时,一种常见的问题是找不到文件:你要查找的文件可能在其他地方、文件名可能不正确或者这个文件根本就不存在。对于所有这些情形,都可以使用try-except代码块以直观的方式进行处理。
我们来尝试读取一个不存在的文件。下面的程序尝试读取alice.txt的内容,但我没有将这个文件存储在alice.py所在的目录中:
python无法读取不存在的文件,因此它将引发一个异常:
在上述的traceback中,倒数第二行报告了FileNotFoundError异常,这是python找不到要打开的文件时创建的异常。在这个示例中,这个错误是函数open()导致的,因此要处理这个错误,必须将try语句放在包含open()的代码行之前:
在这个示例中,try代码块引发FileNotFoundError异常,因此python找出与该错误匹配的except代码块,并运行其中的代码。最终的结果是显示一条友好的错误消息,而不是traceback:
如果文件不存在,这个程序什么都不做,因此错误处理代码的意义不大。下面我们可以分析包含整本书的文本文件。
分析文本
我们可以分析包含整本书的文本文件。很多经典的文学作品都是以简单的文本文件的方式提供的,因为他们不受版权的限制。我们可以使用来自项目Gutenberg(