Python金融大数据分析课件 第7章 错误与异常处理_第1页
Python金融大数据分析课件 第7章 错误与异常处理_第2页
Python金融大数据分析课件 第7章 错误与异常处理_第3页
Python金融大数据分析课件 第7章 错误与异常处理_第4页
Python金融大数据分析课件 第7章 错误与异常处理_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

第7章

错误与异常处理汇报人:时间:2025/01/01学习目标掌握try...except语句掌握try...except...else语句掌握try...except...finally语句掌握抛出异常和自定义异常的方法掌握断言处理目录7.1程序错误概述7.2异常处理7.3自定义异常类7.4断言处理7.5金融实战演练程序错误概述7.1程序错误分类语法错误语法错误是由于代码拼写或结构不符合Python语法规则导致的,编译器无法将源代码转换为字节码。例如,缺少括号或冒号。这种错误会在代码运行前被检测到,通常通过仔细检查代码可以解决。示例:print("随机产生一个数:"random.choice(range(10)))报错:SyntaxError:invalidsyntax运行时错误运行时错误是在程序执行过程中出现的,如未导入模块导致的NameError、零除运算导致的ZeroDivisionError等。这些错误通常是因为程序逻辑或环境问题引起的,需要在运行时捕获和处理。示例:未导入模块使用random、零除运算、访问不存在文件报错:NameError、ZeroDivisionError、FileNotFoundError逻辑错误逻辑错误是指程序可以正常运行,但结果不符合预期。这种错误不会引发异常,需要通过调试和测试来发现。例如,算法实现错误或变量赋值不当都可能导致逻辑错误。示例:defadd(a,b):returna-b(预期求和)无报错但结果错误异常处理7.27.2.1异常处理概述

为了避免程序因为异常而中断执行,我们需要预判在程序中可能会产生的异常并采用结构化的处理机制将错误处理和正常代码逻辑分开,对异常捕获和处理,实现高效的错误处理,增加程序的可维护性。Python中常见的异常异常说明AssertionError当assert语句失败时引发该异常IndentationError当缩进错误时引发该异常IOError当输入/输出错误时引发该异常AttributeError当访问一个属性失败时印发该异常ImportError当导入一个模块失败时引发该异常IndexError当访问序列数据的下标越界时引发该异常KeyError当访问一个映射对象(如字典)中不存在的键时引发该异常MemoryError当一个操作使内存耗尽时引发该异常NameError当引用一个不存在的标识符时引发该异常OverflowError当算数运算结果超出标识范围时引发该异常RecursionError当超过最大递归深度时引发该异常RuntimeError当产生其他所有类别以外的错误时引发该异常StopIteration当迭代器中没有下一个可获取的元素时引发该异常TabError当使用不一致的缩进方式时引发该异常TypeError当传给操作或函数的对象类型不符合要求时引发该异常UnboundLocalError引用未赋值的局部变量时印发该异常ValueError当内置操作或函数接收到的参数具有正确类型但不正确值时引发该异常ZeroDivisionError当除法或求模运算的第2个操作数为0时印发该异常FileNotFoundError当要访问的文件或目录不存在时引发该异常FileExistsError当要创建的文件或目录已存在时引发该异常7.2.2try...except语句功能:捕获指定异常并处理。try语句用来定义代码块,运行可能会抛出异常的代码,except语句用来捕获特定的异常并对该异常执行相关的处理。语法格式:try:try语句的语句块except异常类型1:异常类型1的处理语句块except异常类型2:异常类型2的处理语句块...except异常类型N:异常类型N的处理语句块注:except后面所跟的“异常类型”既可以是单个异常类型如“exceptValueError:”,也可以是由多个异常类型组成的元组,如“except(TypeError,ZeroDivisionError):”,也可以为空,即“except:”,表示捕获所有的异常。执行流程:首先,执行try语句的语句块。如果没有异常发生,忽略except子句,try语句执行后结束。如果在执行try语句的过程中发生了异常,那么try语句余下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行try语句之后的代码。如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。一个try语句可能包含多个except子句,分别来处理不同的特定的异常,但最多只有一个分支会被执行。7.2.2try...except语句示例:a=['abc',0,10]foriina:try:num=int(i)print(10/num)exceptValueError:print('值错误')except:print('其他错误')输出:

值错误

其他错误1.07.2.3try...except…else语句功能:补充try...except,无异常时执行else块。语法格式:try:try语句的语句块except异常类型1:异常类型1的处理语句块except异常类型2:异常类型2的处理语句块...except异常类型N:异常类型N的处理语句块

else:else语句块7.2.3try...except…else语句示例:a=['abc',0,10]foriina:try:num=int(i)print(10/num)exceptValueError:print('值错误')except:print('其他错误')else:print('else被执行')输出:

值错误

其他错误1.0

else被执行7.2.4try...except…finally语句功能:无论是否异常,finally块必执行(用于资源清理)。语法格式:try:try语句的语句块except异常类型1:异常类型1的处理语句块except异常类型2:异常类型2的处理语句块...except异常类型N:异常类型N的处理语句块

finally:finally语句块

7.2.4try...except…finally语句示例:a=['abc',0,10]foriina:try:num=int(i)print(10/num)exceptValueError:print('值错误')except:print('其他错误')finally:print('finally被执行')

输出:

值错误finally被执行其他错误finally被执行1.0finally被执行功能:除了系统执行代码遇到错误自动的产生的异常并抛出之外,我们也可以直接使用raise创建异常,即我们可以根据需要使用raise语句自己来抛出一些异常。语法格式:raise[异常名称(对应语句)]示例:b=[0,10]foriinb:try:num=int(i)print('num=',num)ifi==0:

raiseValueError('数字不能为零')print(10/num)exceptValueErrorasf:print('值错误:',f)7.2.5使用raise语句抛出异常输出:num=0

值错误:数字不能为零num=101.0自定义异常类7.3自定义异常类

除了可以对之前所介绍的的系统的提供的那些异常类型来做捕获以外,我们还可以自己另外去自定义异常。自定义一般继承于Exception类或者其他子类,命名规则一般以Error或Exception为后缀。示例:classNumberError(Exception):#自定义异常类,继承于Exceptiondef__init__(self,data):Exception.__init__(self,data)self.data=datadef__str__(self):#重载__str__方法returnself.data+':非法数值(<0)'deftotal(data):total=0foriindata:ifi<0:raiseNumberError(str(i))total+=ireturntotal自定义异常类#测试代码data1=(44,78,90,80,55)print('总计=',total(data1))data2=(44,78,90,-80,55)print('总计=',total(data2))断言处理7.4断言处理断言作用.帮助程序员调试,验证程序运行的正确性(开发调试阶段使用)适用场景:前置条件断言:代码执行前必须满足的特性后置条件断言:代码执行后必须满足的特性前后不变断言:代码执行前后不能变化的特性断言语法两种形式:assert<布尔表达式>:表达式为False时引发AssertionErrorassert<布尔表达式>,<字符串表达式>:异常时输出字符串信息断言处理示例:b=[0,10]foriinb:

try:

num=int(i)

print('num=',num)

assertnum!=0

print(10/num)

温馨提示

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

评论

0/150

提交评论