百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python之异常:了解常见的内置异常,遇到不慌

off999 2024-11-19 08:33 20 浏览 0 评论

引言

本文接着来聊Python中的异常管理,对于新手来说,一旦看到异常,就会比较慌张。其实,倒不是对异常比较害怕,而是担心不知道该怎么处理这种异常才是比较可怕的。本文就简单列举一下Python中比较常见的异常,从而让大家再次遇到时不至于太慌张。

本文的主要内容有:

1、核心异常类图

2、常见的异常


核心异常的类图

Python中的异常都是直接或者间接继承自BaseException这个基类,常见的异常则是继承自Exception。

按照异常出现的场景,又会有算术异常、迭代异常、导入异常、查找异常、断言异常、操作系统异常、属性异常、类型异常、语法异常、值异常以及运行时异常等。

需要说明的是,这个异常的类图中,只是列举了相对较为常见的异常,并不是Python中异常体系的全部内容。


常见的异常有哪些

对Python中常见的异常的体系有个全局性的了解之后,接下来把一些比较常见的异常做一个简要的描述,从而在后续学习、工作中,遇到对应的异常能够更好的理解其产生的场景、原因,从而更好地对其进行处理应对。

1、BaseException

是所有异常类的基类,通常不会直接使用。

2、Exception

绝大多数异常类的基类,所有用户自定义的异常也应该继承自它。

3、StopIteration

迭代器没有更多的值时,会引发该异常,在前面介绍迭代器和for循环时已经涉及。

4、ArithmeticError

所有算术运算错误的基类。

5、OverflowError

溢出异常,当数值运算的结果超出表示范围时会引发该异常。

6、ZeroDivisionError

除法运算或者取模运算中的除数为0时引发的异常。

7、AssertionError

assert语句相关断言失败时会引发该异常。

需要说明的是,assert语句为假的时候就会触发,但是,应当仅仅用于代码的测试和调试阶段,而不应当应用于生产环境。

8、AttributeError

尝试访问一个对象不存在的属性时会引发该异常。

9、ImportError

导入模块失败时会引发该异常。

10、ModuleNotFoundError

导入模块时,如果要导入的模块没有找到时引发该异常。

11、LookupError

查找序列或者映射中不存在的键或索引时引发该异常。

12、IndexError

序列中使用了超出范围的索引时引发该异常。

13、KeyError

映射中使用了不存在的键时引发该异常。

14、NameError

使用了未定义的变量时引发该异常。

15、BrokenPipeError

链接管道断开导致的异常。

16、ConnectionAbortedError

建立连接的尝试被终止时会触发该异常。

17、ConnectionResetError

连接被重置时引发该异常。

18、FileExistsError

尝试创建的文件已经存在时会引发该异常。

19、FileNotFoundError

尝试打开的文件不存在时会引发该异常。

20、PermissionError

操作因权限不足而失败时会引发该异常。

21、RuntimeError

在运行时检测到错误。

22、NotImplementedError

方法或者功能未被实现时会引发该异常。

23、RecursionError

递归函数中,递归的深度超过限制时会引发该异常。

遇到该异常时,最大的可能就是忘记了编写递归终止条件。

如果问题的计算复杂度导致递归深度确实较深,应当考虑尾递归优化,或者问题规模的拆解。

24、SyntaxError

代码中存在语法错误时会引发该异常。

25、IndentationError

缩进层级存在错误时,会引发该异常,所以,Python代码有需要游标卡尺才能正确编写的戏称。

26、TypeError

操作或者函数应用于不适当的类型的对象时,会引发该异常。

27、ValueError

操作或者函数接收到具有正确类型但是不是合适的值时,会引发该异常。


以上就是在笔者看来,比较常见的异常。

需要说明的是,不同编程语言中的异常体系以及异常处理机制其实都是大同小异的,对于异常的掌握,只要能够清晰理解异常的触发及处理机制,遇到异常不要慌张,仔细查看异常信息,基本上都能够很好地解决。


总结

本文简单梳理了Python中的异常类的继承体系,然后就笔者日常工作中遇到的比较常见的异常,做了一个简单的介绍。

以上就是本文的全部内容了,下一篇文章,准备介绍一下自定义异常的相关内容,感谢您的拨冗阅读,希望对您有所帮助。

相关推荐

面试官:来,讲一下枚举类型在开发时中实际应用场景!

一.基本介绍枚举是JDK1.5新增的数据类型,使用枚举我们可以很好的描述一些特定的业务场景,比如一年中的春、夏、秋、冬,还有每周的周一到周天,还有各种颜色,以及可以用它来描述一些状态信息,比如错...

一日一技:11个基本Python技巧和窍门

1.两个数字的交换.x,y=10,20print(x,y)x,y=y,xprint(x,y)输出:102020102.Python字符串取反a="Ge...

Python Enum 技巧,让代码更简洁、更安全、更易维护

如果你是一名Python开发人员,你很可能使用过enum.Enum来创建可读性和可维护性代码。今天发现一个强大的技巧,可以让Enum的境界更进一层,这个技巧不仅能提高可读性,还能以最小的代价增...

Python元组编程指导教程(python元组的概念)

1.元组基础概念1.1什么是元组元组(Tuple)是Python中一种不可变的序列类型,用于存储多个有序的元素。元组与列表(list)类似,但元组一旦创建就不能修改(不可变),这使得元组在某些场景...

你可能不知道的实用 Python 功能(python有哪些用)

1.超越文件处理的内容管理器大多数开发人员都熟悉使用with语句进行文件操作:withopen('file.txt','r')asfile:co...

Python 2至3.13新特性总结(python 3.10新特性)

以下是Python2到Python3.13的主要新特性总结,按版本分类整理:Python2到Python3的重大变化Python3是一个不向后兼容的版本,主要改进包括:pri...

Python中for循环访问索引值的方法

技术背景在Python编程中,我们经常需要在循环中访问元素的索引值。例如,在处理列表、元组等可迭代对象时,除了要获取元素本身,还需要知道元素的位置。Python提供了多种方式来实现这一需求,下面将详细...

Python enumerate核心应用解析:索引遍历的高效实践方案

喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。根据GitHub代码分析统计,使用enumerate替代range(len())写法可减少38%的索引错误概率。本文通过12个生产...

Python入门到脱坑经典案例—列表去重

列表去重是Python编程中常见的操作,下面我将介绍多种实现列表去重的方法,从基础到进阶,帮助初学者全面掌握这一技能。方法一:使用集合(set)去重(最简单)pythondefremove_dupl...

Python枚举类工程实践:常量管理的标准化解决方案

本文通过7个生产案例,系统解析枚举类在工程实践中的应用,覆盖状态管理、配置选项、错误代码等场景,适用于Web服务开发、自动化测试及系统集成领域。一、基础概念与语法演进1.1传统常量与枚举类对比#传...

让Python枚举更强大!教你玩转Enum扩展

为什么你需要关注Enum?在日常开发中,你是否经常遇到这样的代码?ifstatus==1:print("开始处理")elifstatus==2:pri...

Python枚举(Enum)技巧,你值得了解

枚举(Enum)提供了更清晰、结构化的方式来定义常量。通过为枚举添加行为、自动分配值和存储额外数据,可以提升代码的可读性、可维护性,并与数据库结合使用时,使用字符串代替数字能简化调试和查询。Pytho...

78行Python代码帮你复现微信撤回消息!

来源:悟空智能科技本文约700字,建议阅读5分钟。本文基于python的微信开源库itchat,教你如何收集私聊撤回的信息。[导读]Python曾经对我说:"时日不多,赶紧用Python"。于是看...

登录人人都是产品经理即可获得以下权益

文章介绍如何利用Cursor自动开发Playwright网页自动化脚本,实现从选题、写文、生图的全流程自动化,并将其打包成API供工作流调用,提高工作效率。虽然我前面文章介绍了很多AI工作流,但它们...

Python常用小知识-第二弹(python常用方法总结)

一、Python中使用JsonPath提取字典中的值JsonPath是解析Json字符串用的,如果有一个多层嵌套的复杂字典,想要根据key和下标来批量提取value,这是比较困难的,使用jsonpat...

取消回复欢迎 发表评论: