网站首页 > java教程 正文
前面我们了解了模块与包管理以及Python解释器,今天我们了解下Python的异常处理机制。
1. 什么是错误,异常?
在前面的分享中我们已经见过一些异常错误,每种编程语言它都有一套对错误情况的分析捕获机制。
错误分为语法错误和异常两种:
语法错误:一般是语法使用不规范引起的(不按套路来),语法分析器会帮我们指出来,比如:少个冒号,导入了不存在的模块了。
异常:是在程序运行期间出现的错误,它并不一定会发生而是可能会发生。
对此我们就需要捕获异常并进行相应的处理,保证我们程序的健壮性。如果你的代码出现了异常,就会触发异常处理机制,后面的代码是不会被执行。
2. 常见的一些异常,如:
SyntaxError 语法异常
TypeError 类型异常
IndexError 索引异常
IOError IO异常
KeyError 键值异常
ValueError 类型转换异常
AttributeError 属性异常
ZeroDivisionError 除数为零异常
......
3.异常是怎么处理,格式如下:
try: # 代码块 except Exception as e: # 异常处理 print(e) else: # 没有异常 finally: # 无论是否异常代码都会执行。
实例代码:
上面的异常部分,我们还可以这样写:
注意,对于多个具体异常类型,它的顺序一般是先子类后基类。
Python解释器会自动帮我们抛出这些异常,并打印出错误异常信息,同时程序会崩溃并退出。
这时我们可以根据提示的错误信息来定位、分析、找出问题,并完善我们的代码。
对于异常的捕获,解释器会自动拋出异常,也可以使用raise关键字主动抛出异常,它再把异常抛给了Python解释器,然后再具体处理。实例代码:
5. 自定义异常类
Python内置了非常多的异常类型,基本上都能满足我们日常项目开发,但有时候我们也需要定制一些更具体的异常类型满足业务需要。
如何来定制呢?
首先我们需要用到面向对象编程的类(后续会很快分享出来),同时继承Exception基类,建议自定义类名以"Error"结尾。
异常类的定义,实例代码:
上面我们自定义了一个异常类型,下面我们就看下如何使用,实例代码:
有关Python的异常处理就了解到这里,有什么问题大家评论区留言;后面准备分享File 文件处理,以及面向对象,请大家多多关注和转发哦!
上一篇:Python3 自学第12天:模块与包管理,Python解释器
【极客干货】从事IT行业十余年,在移动互联网开发,J2EE企业级开发,IOT物联网,AI人工智能等方面有点技术积累,熟练使用C/C++,Java,Python等编程语言。从2009年开始接触Python,后续借空闲时间将个人熟悉的技术干货系统性分享给大家,也许我的分享会让你少走一些弯路,如果您觉得还可以,请多多关注,评论和转发,非常感谢!
猜你喜欢
- 2024-11-06 Java核心知识3:异常机制详解(java的三种核心机制是什么)
- 2024-11-06 【Spring系列】05 自定义异常以及全局异常处理器 #java
- 2024-11-06 3种Sentinel自定义异常,你用过几种?
- 2024-11-06 关于Java Exception异常的深入用法及实例
- 2024-11-06 Java-throw异常详解以及过程(java throw exception)
- 2024-11-06 《JAVA编程思想》5分钟速成:第12章(异常)
- 2024-11-06 面试官:java开发中异常怎么定义好 程序员:不知道
- 2024-11-06 「译」11条Java异常处理的最佳实践
- 2024-11-06 Java入门教程十一(异常处理)(java异常处理的三种方法)
- 2024-11-06 Java,你管这叫异常?(java异常是什么意思)
你 发表评论:
欢迎- 05-16SpringBoot整合Redis实现常用功能
- 05-16基于Redis实现简单的延时消息队列
- 05-16安装Redis
- 05-16Spring系列之Redis的两种集成方式
- 05-16Django连接Redis集群问题排查思路和总结
- 05-16只需5分钟,完成Redis所有命令操作~
- 05-16熟练使用 Redis 的 5 大数据结构:Java 实战教程
- 05-16Redis 常见业务场景及实例(Java)
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)