Python语言程序设计(第2版) 课件 第11章 异常处理_第1页
Python语言程序设计(第2版) 课件 第11章 异常处理_第2页
Python语言程序设计(第2版) 课件 第11章 异常处理_第3页
Python语言程序设计(第2版) 课件 第11章 异常处理_第4页
Python语言程序设计(第2版) 课件 第11章 异常处理_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

第11章异常处理异常处理概述捕获和处理异常断言处理主动引发异常与自定义异常类11.1异常处理概述程序中的错误通常分为语法错误、运行错误和逻辑错误。在程序中,对各种可预见的异常情况进行处理称为异常处理(exceptionhandling)。例如,做除法运算时,应对除数进行判断,对除数是0的情况进行异常处理。

例11-1整除程序的简单异常处理方法。defmain():a,b=eval(input())ifb==0:print("Divide0!")else:s=a/bprint(s)main()11.2捕获和处理异常11.2.1Python中的异常类Python中提供了一些异常类,同时也可以自己定义自己的异常。所有异常都是基类Exception的成员。所有异常都从基类Exception继承,而且都在exceptions模块中定义。Python自动将所有异常名称放在内置命名空间中,所以程序不必导入exceptions模块即可使用异常。一旦引发而且没有捕捉SystemExit异常,程序执行就会终止。如果交互式会话遇到一个未被捕捉的SystemExit异常,会话就会终止。11.2.2使用try-except语句1.最简单形式的异常处理try-except语句最简单的形式如下:try:语句块except:异常处理语句块其异常处理过程是:执行try后面的语句块,如果执行正常,语句块执行结束后转向执行try-except语句的下一条语句;如果引发异常,则转向异常处理语句块,执行结束后转向try-except语句的下一条语句。例11-2整除程序的异常处理。defmain():a,b=eval(input())try:s=a/bprint(s)except:print("Divide0!")main()程序运行结果如下:2,3↙(第1次运行)0.66666666666666662,0↙(第2次运行)Divide0!2.分类异常处理一般格式如下:try:语句块except异常类型1[as错误描述]:异常处理语句块1……except异常类型n[as错误描述]:异常处理语句块nexcept:默认异常处理语句块else:语句块3.异常处理的嵌套异常处理可以嵌套。如果外层try子句中的语句块引发异常,程序将直接跳转到外层try对应的except子句,而内部的try子句将不会被执行。例11-4异常处理嵌套示例。11.2.3使用try-finally语句finally子句是指无论是否发生异常都将执行相应的语句块。语句格式如下:try:<语句块>finally:<语句块>例11-5将输入的字符串写入到文件中,直至按Q键结束。如果按Ctrl+C键,则终止程序运行,最后要保证打开的文件能正常关闭。分析:当对文件进行操作时,不管是否发生异常,都希望关闭文件,这是可以使用finally子句来完成。11.3断言处理使用assert(断言)语句可以声明断言,其格式如下:assert逻辑表达式assert逻辑表达式,字符串表达式assert语句有1个或2个参数。第1个参数是一个逻辑值,如果该值为True,则什么都不做。如果该值为False,则断言不通过,抛出一个AssertionError异常;第2个参数是错误的描述,即断言失败时输出的信息,也可以省略不写。例11-6a整除程序的断言处理。a,b=eval(input())assertb!=0,'除数不能为0!'c=a/bprint(a,"/",b,"=",c)程序运行结果如下:2,3↙2/3=0.66666666666666662,0↙Traceback(mostrecentcalllast):File"C:/Python34/aaa.py",line5,in<module>assertb!=0,'除数不能为0!'AssertionError:除数不能为0!AssertionError异常可以被捕获,并像使用在try-except语句的任何其他异常处理,但如果不处理,它们将终止程序并产生回溯。例11-7AssertionError异常处理。try:assert1==3exceptAssertionError:print("Assertionerror!")程序运行结果如下:Assertionerror!11.4主动引发异常与自定义异常类11.4.1主动引发异常raise语句的格式如下:raise异常类型[(提示参数)]其中提示参数用来传递关于这个异常的信息,它是可选的。>>>raiseException("抛出一个异常")Traceback(mostrecentcalllast):File"<pyshell#24>",line1,in<module>raiseException("抛出一个异常")Exception:抛出一个异常11.4.2自定义异常类自定义异常使用raise语句引发,而且只能通过人工方式引发。例如,创建异常类(NumberError.py),程序段如下:classNumberError(

温馨提示

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

最新文档

评论

0/150

提交评论