Python程序设计ppt课件第10章-错误及异常处理

上传人:94****0 文档编号:250494057 上传时间:2024-11-03 格式:PPTX 页数:31 大小:542.90KB
返回 下载 相关 举报
Python程序设计ppt课件第10章-错误及异常处理_第1页
第1页 / 共31页
Python程序设计ppt课件第10章-错误及异常处理_第2页
第2页 / 共31页
Python程序设计ppt课件第10章-错误及异常处理_第3页
第3页 / 共31页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2020/11/15,#,错误与异常,捕获和处理异常,处理异常的特殊方法,PyCharm中使用debug工具,第十章 错误及异常处理,参考书目,Python,程序设计,错误与异常第十章 错误及异常处理参考书目Python 程序,1,目录,错误与异常,捕获和处理异常,处理异常的特殊方法,PyCharm中使用debug工具,这里说明图片内容,目录错误与异常这里说明图片内容,2,错误与异常,捕获和处理异常,处理异常的特殊方法,PyCharm中使用debug工具,目录,这里说明图片内容,错误与异常目录这里说明图片内容,3,错误与异常,1 两种类型的错误,不管那种错误,只要被Python检测到,程序都会发生,异常,1.语法错误,语法错误是指软件的编写不符合Python语言的语法规定,导致无法被解释器解释或编译器编译。,2逻辑错误,程序运行以后出现的错误就是逻辑错误,逻辑错误可能是由于外界条件引起的(比如网络断开、文件格式损坏、输入字符串格式不正确等),也可能是程序本身设计不严谨导致的,比如0作为除法。,错误与异常1 两种类型的错误不管那种错误,只要被Python,4,错误与异常,2 什么是异常,当Python检测到一个错误时,解释器就会指出当前流已无法继续执行下去,这时候就是出现了异常。,异常分为两个阶段:,引起异常发生的错误,检测并进行处理的阶段,第一个阶段,第二个阶段,错误与异常2 什么是异常当Python检测到一个错误时,解,5,错误与异常,2 什么是异常,异常的,5,种用途:,错误处理,事件通知,特殊情况处理,终止行为,非常规控制流程,错误与异常2 什么是异常异常的5种用途:错误处理事件通知特,6,错误与异常,2 什么是异常,在Python中常使用异常对象来表示不同的异常,并已经为常见的异常建立了异常类,。,异常类名,描 述,BaseException,所有异常的基类,Exception,常规错误的基类,NameError,尝试访问一个没有申明的变量,IndentationError,缩进错误,ZeroDivisionError,除数为0,SyntaxError,语法错误,IndexError,索引超出序列范围,KeyError,映射不存在的(字典)键,IOError,输入输出错误(比如你要读的文件不存在),AttributeError,尝试访问未知的对象属性,ValueError,传给函数的参数类型不正确,TypeError,将变量,类型不同相符的值赋给变量时,EOFError,发现一个不期望的文件尾,错误与异常2 什么是异常在Python中常使用异常对象来表,7,错误与异常,3 常见的错误与异常,1.缺少冒号引起的错误。,2.将比较运算符“=”与赋值运算符“=”混淆。,3.代码结构的缩进错误。,4.修改元组和字符串值时报错。,5.连接字符串和非字符串。,6.在字符串首尾忘记加引号。,错误与异常3 常见的错误与异常1.缺少冒号引起的错误。,8,错误与异常,3 常见的错误与异常,7.变量或函数名拼写错误。,8.使用关键字作为变量名。,9.引用超过列表最大值索引值。,10.变量没有初始化值时,参与运算引起错误。,11.误使用自增和自减运算符。,12.在定义类时,忘记为方法的第一个参数添加self参数。,错误与异常3 常见的错误与异常7.变量或函数名拼写错误。,9,错误与异常,捕获和处理异常,处理异常的特殊方法,PyCharm中使用debug工具,目录,这里说明图片内容,错误与异常目录这里说明图片内容,10,捕获和处理异常,当程序出现异常时,Python默认的异常处理行为将开始工作,它会停止程序并打印出错误消息。但这往往并不是我们想要的。例如,服务器程序一般需要在内部错误发生时依然保持工作。如果,不希望使用默认的异常处理行为,,就需要把调用包装在try语句中,自行捕捉异常。,异常由四个相关语句进行处理:,try,except,else,finally,检测异常,捕获异常,捕获和处理异常当程序出现异常时,Python默认的异常处理行,11,捕获和处理异常,1 try.except.语句,try:,可能会出错的代码,except 错误类型:,出错后的处理语句,try-except,语句,定义了监控异常的一段代码,并提供了处理异常的机制。,捕获和处理异常1 try.except.语句try:,12,捕获和处理异常,2 tryexceptelse语句,如果try范围内捕获了异常,就执行except块;如果try范围内没有捕获异常,就执行,else,块。,捕获和处理异常2 tryexceptelse语句如果,13,捕获和处理异常,3 带有多个except的try语句,try,:,#,语句块,except,异常名称,1,:,#,异常处理代码,1,except,异常名称,2,:,#,异常处理代码,处理多个异常,的,try-except,语句格式如下:,捕获和处理异常3 带有多个except的try语句try:,14,捕获和处理异常,4 捕获所有异常,BaseException是所有内建异常的基类,通过它可以捕获所有类型的异常,Keyboardlnterrupt,SystemExit和Exception是从它直接派生出来的子类。,程序需要捕获所有异常时,可以使用BaseException。,try:,x = float(input(请输入被除数:),y = float(input(请输入除数:),z = x / y,except BaseException as e:,print(e),else:,print(z),捕获和处理异常4 捕获所有异常BaseException是,15,捕获和处理异常,5 finally子句,try:,可能会出错的语句,finally:,无论是否出错都会执行的语句,Finally子句与try语句联合使用,表示无论try语句是否出错都会执行语句。,在程序中,无论是否捕捉到异常,都必须要执行某件事情,例如关闭文件、释放锁等,这时可以提供,finally,语句,处理。通常情况下,,finally,用于释放资源。,捕获和处理异常5 finally子句try:Finally,16,捕获和处理异常,5 finally子句,try:,可能会出现异常的语句块,Except A:,异常发生后的处理,Except B:,异常发生后的处理,except:,其他异常发生后的处理,else:,异常未发生后的执行语句,finally:,无论异常是否发生都会执行的语句。,总语法结构:,所出现的顺序必须是try-except X-except-else-finally,捕获和处理异常5 finally子句try:总语法结构:所,17,错误与异常,捕获和处理异常,处理异常的特殊方法,PyCharm中使用debug工具,目录,这里说明图片内容,错误与异常目录这里说明图片内容,18,处理异常的特殊方法,1 raise语句抛出异常,在Python中,raise语句用于抛出特定的异常,其语法格式如下:,如果捕获到的异常在本级无法处理,或者不应该由本级处理,也可以将,异常抛出,,交给上一级代码处理等方式。,raise Exception , args , traceback,Exception,是异常的类型(例如,,NameError,)参数是一个异常参数值。该参数是可选的,如果不提供,异常的参数是,None,。,最后一个参数是可选的(在实践中很少使用),是跟踪异常对象。,处理异常的特殊方法1 raise语句抛出异常在Python,19,处理异常的特殊方法,1 raise语句抛出异常,Python 3.0(而不是2.6)也允许raise语句拥有一个可选的from子句。,raise exception from otherexception,使用,raise.from,可以在异常中抛出另外的异常。,try:,num,except Exception as exception:,raise IndexError(,下标超出范围,) from exception,try,里面只定义了变量,num,,会引发,NameError,异常。,except,子句使用,raise.from,抛出,NameError,异常后再抛出“下标越界”的异常。,处理异常的特殊方法1 raise语句抛出异常Python,20,2 assert语句判定用户定义的约束条件,Assert断言语句用于判断一个表达式是否为真,如果表达式为True,则不作任何操作,如果为False则会引发AssertionError异常。,assert,逻辑表达式,,data,if not,逻辑表达式,:,raise AssertionError(data),assert后面紧跟一个逻辑表达式,相当于条件。Data通常是一个字符串,当条件为false时作为异常的描述信息。,try:,assert 1 = 2 , 1 is not equal 2!,except AssertionError as reason:,print(%s:%s%(reason._class_._name_, reason),AssertionError:1 is not equal 2!,2 assert语句判定用户定义的约束条件Assert断言语,21,处理异常的特殊方法,3 withas语句,With语句适用于对资源进行访问的场合,无论资源使用过程是否发生异常,都会执行必要的释放资源的操作,比如文件使用后的自动关闭、线程中锁的自动获取和释放等。,with 上下文表达式 as 资源对象:,对对象的操作,with open(c: temp.txt) as f:,for line in f:,print(line),程序运行结果如下:,人生苦短,我只用Python!,处理异常的特殊方法3 withas语句With语句适用于,22,处理异常的特殊方法,4 自定义异常,创建,一个继承,Exception,类的子类,,就是自定义异常类,。,当遇到自己设定的错误时,使用,raise,语句抛出自定义的异常。,【例】创建一个类,基类为BaseException,用于在异常触发时输出更多的信息的自定义异常处理示例。,class Networkerror(BaseException):,def _init_(self,msg):,self.msg=msg,def _str_(self):,return self.msg,try:,raise Networkerror(类型错误),except Networkerror as e:,print(e),处理异常的特殊方法4 自定义异常创建一个继承Exceptio,23,错误与异常,捕获和处理异常,处理异常的特殊方法,PyCharm中使用debug工具,目录,错误与异常目录,24,PyCharm中使用debug工具,5 PyCharm中使用debug工具,断点调试是在开发过程中常用的功能,能清楚看到代码运行的过程,有利于代码问题跟踪。pycharm调试程序的过程,如下:,1.打断点:,左键点击,行号右边,出现一个红色圆点标志,为,断点,再次点击取消断点,PyCharm中使用debug工具5 PyCharm中使用d,25,PyCharm中使用debug工具,5 PyCharm中使用debug工具,2.右键点击编辑区,点击Debug按钮;或在工具栏选择运行的文件,点Debug图标按钮,PyCharm中使用debug工具5 PyCharm中使用d,26,PyCharm中使用debug工具,5 PyCharm中使用debug工具,3.显示出Debug控制台。,控制台有两个显示的面板:Debugger和console。,Debugger用于显示变量和变量的细节,Console用于输出内容。,PyCharm中使用debug工具5 PyCharm中使用d,27,PyCharm中使用debug工具,5 PyCharm中使用debug工具,4.点击Step Over按钮开始单步调试,每点击一次,跳一步。并在解释区显示内容。,5.点击完最后一步,解释区也清空。整个过程能清楚的看到代码的运行位置。,PyCharm中使用debug工具5 PyCharm中使用d,28,PyCharm中使用debug工具,5 PyCharm中使用debug工具,6.接下来,针对console界面的调试。重新运行调试程序,点击console,更换至输出数据面板。点击Step Over步步执行代码。,7.最后一步,将显示信息:Process finished with exit code 0。整个调试过程结束。,PyCharm中使用debug工具5 PyCharm中使用d,29,本章小结,Python异常是一种高级控制流设备。它们可能由Python引发,或者由你自己的程序引发。,本,章详细地介绍了,异常的处理,,探索Python中有关,异常的语句,:try是捕捉,raise是触发,assert是条件式引发,而with是把代码块包装在环境管理器中。,本章小结Python异常是一种高级控制流设备。它们可能由P,30,思考与练习,1简述try语句的用途。,2try语句的两个常见变体是什么?,3raise语句有什么用途?,4try-except和try-finally有什么不同?,思考与练习1简述try语句的用途。,31,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!