当前位置: 首页 > news >正文

《0基础》学习Python——第十五讲

一、异常处理(try-exception-else-finally  raise)

        在程序运行过程中,总会遇到各种各样的错误。有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误通常称之为bug,bug是必须修复的。有的错误是用户输入造成的,比如让用户输入email地址,结果得到一个空字符串,这种错误可以通过检查用户输入来做相应的处理

        还有一类错误是完全无法在程序运行过程中预测的,比如写入文件的时候,磁盘满了,写不进去了,或者从网络抓取数据,网络突然断掉了。这类错误也称为异常,在程序中通常是必须处理的,否则,程序会因为各种问题终止并退出。Python内置了一套异常处理机制,来帮助我们进行错误处理

        异常处理是指在程序运行过程中出现错误或异常时,对其进行捕获、处理和恢复的一种机制。在Python中,异常处理通过使用try-except语句块来实现。

        在try块中放置可能会发生异常的代码,当异常发生时,程序会跳转到对应的except块中执行特定的处理代码。except块可以捕获特定类型的异常,也可以使用通用的Exception来捕获所有类型的异常。

        除了使用try-except语句外,还可以使用finally子句来定义一些一定会执行的代码,无论是否发生异常。在finally块中,通常会放置一些资源释放的操作,以确保无论程序是否发生异常,都能正确地释放资源。

        异常处理还可以使用raise语句手动抛出异常,以便在程序中主动引发异常并触发相应的异常处理逻辑。

Python异常层级:

二、异常错误类型

        1、SyntaxError : 语法错误,通常表示代码书写不正确。

        2、ZerDivisionError :除数为0错误 

        3、NameError:名称错误,表示使用了未定义的变量或函数名。

        4、TypeError类型错误,表示变量或表达式的类型不正确。

        5、IndexError索引错误,表示对序列类型(如列表或字符串)使用了无效的索引。

        6、ValueError值错误,表示传递给函数的参数值不合法。

        7、KeyError键错误,表示在字典中使用了不存在的键。

        8、FileNotFoundError:文件未找到错误,表示试图打开或不存在的文件。

        9、ArributeError : 尝试访问位置对象属性错误

       

三、try-except用法

        在Python中可通过try...except...else...finally...机制捕获异常并进行处理

        

        例如下列简单代码

if __name__ == '__main__':lt=[1,2,5,8,6,1]try: #其下面放不确定会不会出错的代码lt[6]except Exception as e:  #Exception为Python内置的异常处理的大类,如果try出错,那么执行这部分代码块内容print(e)

        如上部代码,构造了一个列表,然后去索引它,但是不知道索引的对不对,就将不确定的处理方法放在try代码块下面,如果是错的,那么就运行except代码块的内容,而Exception是一个是一个Python内置的大类,便可以直接打印报错类型,而不会显示红色报错并终止程序。

即如果使用了try和except函数,那么程序出错则打印这个结果

如果没有使用try则会打印这个结果,即 索引越界

四、else和finally用法

if __name__ == '__main__':# a=10lt=[1,2,5,8,6,1]try:lt[6]except Exception as e:print(e)else:print('try 代码块没有错误')finally:print('这句话必须打出来)print("代码继续执行")

上述代码,如果try判断代码块没有异常则继续运行else内的语句,如果try出现异常,那么便会直接运行except内的代码块,但是无论try判断是否有异常,finally都会运行。

五、raise作用

        raise 需要指定要被抛出的异常。它必须是一个异常的实例或者是异常的(也就是 Exception 的子类

        用户自定义异常:在Python中可以通过创建一个新的异常类来拥有自己的异常

        自定义异常的原因:Python提供的内建异常不够用、可以预估某个错误的产生

        定义异常类 : 异常类继承自 Exception 类,可以直接继承,或者间接继承

        raise关键字在Python中用于手动抛出异常。它的作用是使程序进入异常状态,并显示特定的错误消息。当某个错误或异常条件发生时,可以使用 raise 关键字来主动抛出异常。通过 raise 关键字,可以选择性地指定要抛出的异常类型和相关的错误信息。  

        其用法如下:

raise ExceptionType("error message")
  • ExceptionType:表示要抛出的异常类型,可以是内置的异常类也可以是自定义的异常类
  • "error message":表示错误消息,是一个可选的参数,用于描述异常的具体内容。

        首先,我们定义一个类class Myerror(Exception):其继承Python内置的Exception类,可以定义特定类型的异常,以便在程序中抛出和处理这些异常。

class Myerror(Exception):passif __name__ == '__main__':li=[150,160,-10,-50,66]for i in li:v=100/iif v<0: #抛出异常raise Myerror('这批货有问题,终止交易')

其运行结果为:

六、SyntaxError(语法错误)

      
 缺少起始符号或结尾符号(括号、引号等)

        缩进错误:

                

        关键词拼写错误:

七、六种典型异常

        1、除零错误(ZeroDivisionError) : 除数为0

        2、名称错误(NameError) : 变量使用前未进行申明或者初始化

        3、类型错误(TypeError)  : 某些函数或者方法只适用于特定的数据类型,如果 对数据类型的操作不当,就会产生类型错误

                4、数值错误(ValueError) : 在输入类型正确的情况下,具体输入值错误

                5、索引错误(IndexError) :  超出序列长度的索引操作

                6、属性错误(AttributeError) : 方法或者属性不适用该对象

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Docker安装Zookeeper、RocketMQ
  • 【源码阅读】osproxy对象存储分布式代理(1)
  • Python面试题:在 Python 中,如何使用 multiprocessing 模块?
  • SpringBoot+HttpClient实现文件上传下载
  • LabVIEW异步和同步通信详细分析及比较
  • 0基础学python-14:python进阶之面向对象
  • Linux指令ros学习python深度学习bug学习笔记
  • 景区客流统计系统提升服务精准度
  • 深入理解Session和Cookie的作用与联系
  • 《汇编语言 基于x86处理器》- 读书笔记 - Visual Studio 2019 配置 MASM环境
  • 产品经理-一份标准需求文档的8个模块(14)
  • 亚信安全发布2024年第24期《勒索家族和勒索事件监控报告》
  • LabVIEW比例压力控制阀自动测试系统
  • 前端学习常用技术栈
  • 物流EDI:马士基IFTMBF 订舱请求
  • ES6系列(二)变量的解构赋值
  • JavaScript设计模式与开发实践系列之策略模式
  • JavaScript异步流程控制的前世今生
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • k8s 面向应用开发者的基础命令
  • MobX
  • Python 反序列化安全问题(二)
  • vue-router的history模式发布配置
  • Vue全家桶实现一个Web App
  • 基于组件的设计工作流与界面抽象
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前端性能优化--懒加载和预加载
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 我与Jetbrains的这些年
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 国内开源镜像站点
  • #ifdef 的技巧用法
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (2015)JS ES6 必知的十个 特性
  • (4.10~4.16)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (python)数据结构---字典
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (二)windows配置JDK环境
  • (附源码)ssm码农论坛 毕业设计 231126
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (十六)Flask之蓝图
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (译)2019年前端性能优化清单 — 下篇
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • *2 echo、printf、mkdir命令的应用
  • .gitignore文件使用
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET Standard 的管理策略