PYTHON程序设计 课件 【ch08】异常处理_第1页
PYTHON程序设计 课件 【ch08】异常处理_第2页
PYTHON程序设计 课件 【ch08】异常处理_第3页
PYTHON程序设计 课件 【ch08】异常处理_第4页
PYTHON程序设计 课件 【ch08】异常处理_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

异常处理“计算机类精品系列教材Python程序设计第八章01错误与异常的概念一、错误与异常的概念01错误在使用Python时,编写代码的过程中出现的错误一般分为语法错误和逻辑错误。语法错误指代码不符合Python解释器语法。计算机语言不像生活中使用的母语,计算机语言对语法有着绝对严格的要求,如日常书写过程中标点的偶尔丢失并不会影响对语句的理解,而在计算机中每一个规定的符号都有具体的使用要求,一个标点的错误使用直接导致程序无法运行。在刚接触Python时,缩进错误(相同逻辑层没有保持相同的缩进)、符号错误(使用了与英文符号相似的中文符号,如中文的圆括号和中文的冒号)、变量未定义错误是经常出现的错误。当出现语法错误时,在程序执行前编程软件就会提示错误信息,这时需要及时按照提示信息进行改正,否则程序无法正常执行。一、错误与异常的概念01错误1.缩进错误运行上面的代码这里a和b的赋值在同一个逻辑层中,应该使用相同的缩进,出现错误时会提示缩进错误的信息。一、错误与异常的概念01错误2.符号错误运行上面的代码,将报下面的错误。这里应该使用英文的冒号“:”,而不是中文的冒号“:”,Python会将出错的位置指示出来,并给出提示错误信息。一、错误与异常的概念01错误3.变量未定义运行上面的代码,将报下面的错误。这里的c在前面没有给出定义信息,Python会给出变量名称未定义的提示错误信息。逻辑错误指由不完整或者不合理输入导致的错误,还可能是逻辑无法生成、计算或是运行结果需要的过程无法执行。逻辑错误一般是在程序尝试执行时引发的。例如,在程序中接收了一个输入值,无法转换成对应的类型的变量;程序陷入无法跳出的死循环;使用对象中没有的属性或方法,或者除数为0等。一、错误与异常的概念01错误例如:a=int(input('请输入一个整数:'))当输入一个非数字字符时,如test,将报下面的错误。例如:运行上面的代码,分别输入5和0,将报下面的错误。一、错误与异常的概念02异常当Python检测到一个错误时,解释器会指示当前代码无法继续执行,这时候就会出现异常。因此,异常是由于程序运行出现了错误而在正常控制流以外采取的行为。这个行为分为两个阶段:首先是由于错误引起异常的发生,然后是检测和采取可能的措施。第一个阶段是在发生了一个异常条件后发生的。只要检测到错误并且意识到异常条件的发生,解释器会引发一个异常。引发也可以叫作触发或生成,解释器通过它通知当前控制流有错误发生。第二个阶段是当前流将被打断,用来处理这个错误并采取相应的操作。Python允许程序员自己引发异常,无论是由Python解释器还是程序员引发的,异常就是错误发生的信号。对异常的处理发生在第二个阶段。异常引发后,可以调用很多不同的操作,可以是忽略错误(记录错误但不采取任何措施,采取补救措施后终止程序),或者是减轻问题的影响后设法继续执行程序。这些操作都代表一种继续,或是控制的分支,关键是程序员在错误发生时可以指示程序如何执行。一、错误与异常的概念02异常Python有已经构建好的三类异常:SystemExit(解释器请求退出)、KeyboardInterrupt(用户中断执行)和Exception(常规错误的基类),在程序执行前就已经存在,且所有的异常都继承自BaseException这个基类。在上文中演示的几种错误形式中出现的IndentationError、SyntaxError和NameError都继承自Exception类。此外,再介绍以下几种常见的异常。●TypeError(对类型无效的操作):当一个操作或函数被应用于类型不适当的对象时出现。●AttributeError:当试图使用一个对象没有的属性或方法时出现。●IndexError:当序列下标索引超出范围时出现。02Python异常处理二、Python异常处理01异常处理——try语句1.if···except语句try···except语句用于捕获可能出现异常的语句,其语法结构如下。其中try_suite为可能出现异常的代码,try用来捕获try_suite中的异常,并且将错误交给except处理。except用来处理异常,如果处理的异常和设置的异常Exception一致,则使用exception_block处理异常,不一致的话就会被解释器处理。如果设置了e,那么这个错误就会被保存在e中。二、Python异常处理01异常处理——try语句当捕获发生的异常类型与except的异常类型不一致时,解释器自动处理异常,同时中断程序运行。例如:二、Python异常处理01异常处理——try语句try···except语句可以处理多个异常,其语法结构如下。二、Python异常处理01异常处理——try语句例如:运行上面的代码,并输入下面的编号值,输出结果如下。二、Python异常处理01异常处理——try语句当捕获到不同的异常使用相同的处理语句时,可以将多个异常变为异常元组,例如,上面的代码可以优化成以下代码。二、Python异常处理01异常处理——try语句如果所有的异常都使用相同的处理语句,则可以省略异常类型,例如,上面的代码可以进一步修改为以下代码。二、Python异常处理01异常处理——try语句2.try···except···else语句try···except···else语句的语法结构如下。当没有捕获异常时,就执行else语句。当捕获异常时,若异常类型与except类型一致,则执行except语句,跳过else语句,正常向后运行;若异常类型与except类型不一致,则解释器处理异常,程序中断执行。二、Python异常处理01异常处理——try语句当try代码块出现异常时,将执行异常处理语句,并跳过else子句,继续往下执行。例如:二、Python异常处理01异常处理——try语句3.try···except···finally语句try···except···finally语句的语法结构如下。若try语句块没有捕获异常,则执行完try语句块后,执行finally语句块;若try语句块捕获异常,则首先执行except语句块来处理错误,然后执行finally语句块。总之,finally语句块无论是否有异常都会被执行。注意:(1)当捕获的异常与except的异常不一致时,仍会先执行finally语句块,再中断程序运行。(2)当try语句块中有return语句时,会跳过else语句块,但finally语句块仍会执行。二、Python异常处理01异常处理——try语句例如:二、Python异常处理02断言——assert语句assert语句的语法结构如下。assert表达式[,'描述文字']assert语句的功能是检测表达式是否为真,如果为假,则引发AssertionError异常并给出描述文字;如果为真,则继续执行下面的代码。从根本上说,Python中的assert语句是一种调试工具,用来测试某个断言条件是否满足,如果满足则继续执行,如果不满足则触发AssertionError异常。二、Python异常处理02断言——assert语句例如,输入一个0~100之间的成绩。二、Python异常处理02断言——assert语句断言是为了告诉开发人员程序中某些关键条件没有得到满足,这些条件得不到满足,程序不足以继续运行。如果程序中没有bug,那么这些断言条件永远也不会被触发,但如果违反了断言条件,程序就会崩溃并报告断言错误,从而判断出究竟违反了哪个“不可能”的情况,这样可以更轻松地追踪和修复程序中的bug。Python中的断言语句是一种调试辅助功能,不是用来处理运行时错误的机制,使用断言的目的是让开发人员更快速地找到可能导致bug的根本原因,而try语句是用来处理出现异常的机制。注意:在Python中,可以通过命令-o和-oo来全局禁用断言,因此不要用断言语句去验证数据的有效性,应该将断言作为-一种调试方法,用在开发中的自检和bug识别。二、Python异常处理03抛出异常——rasie语句raise语句的语法结构如下。raise异常类型('描述文字')raise语句的功能是主动抛出异常,其中,描述文字为该异常的

温馨提示

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

评论

0/150

提交评论