Python程序设计基础-Chap09-异常_第1页
Python程序设计基础-Chap09-异常_第2页
Python程序设计基础-Chap09-异常_第3页
Python程序设计基础-Chap09-异常_第4页
Python程序设计基础-Chap09-异常_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第9章 异常和异常处理内容提纲9.1 文件和文件路径 29.2 文件的读写39.3 文件定位4359.4 文件相关函数及综合应用19.5 CSV文件操作引例 在前面的上机实践过程中,读者可能遇到过很多错误或异常。错误一般指语法错误,通常是由于我们没有正确掌握语法或输入代码过程中出错而造成的。这需要编程者自己尽力在编码和输入过程中避免。异常即是一个事件。该事件会在程序执行过程中发生,影响了程序的正常执行。引例下面的代码根据用户输入的身高和体重数据计算用户的体重系数BMI。height=float(input(enter your height(m): )weight=float(input(en

2、ter your weight(kg):)bmi=round(weight/(height*height),2)print(your BMI is: ,bmi)程序要求输入合理的数据,一旦用户误将身高数据输入为0,则程序会出现异常突然退出,并伴随一堆错误信息,如下所示:Traceback (most recent call last): File C:/Users/ws/PycharmProjects/untitled1/ws.py, line 3, in bmi=round(weight/(height*height),2)ZeroDivisionError: float division

3、by zero9.1 错误和异常9.1.1 语法错误语法错误,也称作解析错误,也许是学习Python 过程中最常见的。下面的代码中print有拼写错误。prin(hello,world)Traceback (most recent call last): File , line 1, in prin(hello,world)NameError: name prin is not defined语法分析器指出错误行为第1行,因为print少了一个“t”。错误会输出文件名和行号,所以如果是从脚本输入的你就知道去哪里检查错误了。这类错误需要编程者自己不断提高编辑和编程水平来减少发生的频率,而不能指望

4、Python系统帮我们解决。9.1 错误和异常9.1.2 异常即使一条语句或表达式在语法上是正确的,当试图执行它时也可能会引发错误。运行期检测到的错误即为异常。 20*(10/0)Traceback (most recent call last): File , line 1, in 20*(10/0)ZeroDivisionError: division by zero以上代码出现除数为0的异常。20+mycarTraceback (most recent call last): File , line 1, in 20+mycarNameError: name mycar is not d

5、efined9.1 错误和异常异常名称描述BaseException所有异常的基类KeyboardInterrupt用户中断执行(通常是输入C)Exception常规错误的基类ArithmeticError所有数值计算错误的基类FloatingPointError浮点计算错误OverflowError数值运算超出最大限制ZeroDivisionError除(或取模)零(所有数据类型)IOError输入/输出操作失败IndexError序列中没有此索引(index)KeyError映射中没有这个键MemoryError内存溢出错误(对于Python 解释器不是致命的)NameError未声明/初

6、始化对象(没有属性)9.2 异常处理9.2 异常处理为了使程序在发生异常时不崩溃,编程者需要按特定语法格式处理异常,使得程序可以继续运行。比如一个程序要求用户输入年龄,显然程序期待的是一个数字,但如果用户输入了“ab”这样的字符串值(用户很容易输入类似的数据),程序若没有处理异常的代码就会退出运行,提示用户发生了“ValueError”异常。程序这样轻易就崩溃,将会使用户非常恼火。合理的处理方式是,当异常发生时程序要处理它,并提示用户输入正确格式的数字。9.2 异常处理9.2.1 异常处理语法异常处理语法结构如下: try:except :except:except:#上一句except分支不

7、指定任何类型的异常,表示可以匹配任何异常类型。else:finally:9.2 异常处理9.2.2 常见异常处理示例下面代码处理打开文件异常。try: fh = open(testfile, r) mystr=fh.read(20)except IOError: print(“没有找到文件或读取文件失败)else: print(mystr) fh.close()9.2 异常处理执行以上代码,如果当前目录下不存在testfile这个文件,则程序产生异常,此异常被excep IOError分支捕获,程序将输出:没有找到文件或读取文件失败。如果文件存在,则程序会顺利打开文件并执行else分支,输出文

8、件中的前20个字符,然后关闭文件,程序退出。9.3 抛出异常和自定义异常9.3.1 如何抛出异常当程序出现错误时,Python会自动引发异常,也可以通过raise显式地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。换句话说,raise 语句允许程序员在任何必要的时候强制抛出一个指定的异常,而不必等Python引发。语法格式如下:raise exceptionName即只要在raise关键字后跟上一个异常类型名,就可立即引发一个异常,改变程序的执行路径。9.3 抛出异常和自定义异常9.3.2 用户自定义异常用户可以自己创建异常。Python中异常是类,创建异常,就是创建一个异常子类。通过继承,将异常类的所有基本特点保留下来。通过这种方式,程序可以命名它们自己的异常。自定义异常是通过扩展BaseException类或BaseException的子类来定义一个新的异常。BaseException类是所有异常类的父亲,所有的Python异常类都直接或间接地继承自BaseException类。定义异常类的语法:class MyException(Exception): pass MyExcepti

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论