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

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

off999 2024-11-19 08:33 26 浏览 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中的异常类的继承体系,然后就笔者日常工作中遇到的比较常见的异常,做了一个简单的介绍。

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

相关推荐

PYTHON-简易计算器的元素介绍

[烟花]了解模板代码的组成importPySimpleGUIassg#1)导入库layout=[[],[],[]]#2)定义布局,确定行数window=sg.Window(&#...

如何使用Python编写一个简单的计算器程序

Python是一种简单易学的编程语言,非常适合初学者入门。本文将教您如何使用Python编写一个简单易用的计算器程序,帮助您快速进行基本的数学运算。无需任何高深的数学知识,只需跟随本文的步骤,即可轻松...

用Python打造一个简洁美观的桌面计算器

最近在学习PythonGUI编程,顺手用Tkinter实现了一个简易桌面计算器,功能虽然不复杂,但非常适合新手练手。如果你正在学习Python,不妨一起来看看这个项目吧!项目背景Tkint...

用Python制作一个带图形界面的计算器

大家好,今天我要带大家使用Python制作一个具有图形界面的计算器应用程序。这个项目不仅可以帮助你巩固Python编程基础,还可以让你初步体验图形化编程的乐趣。我们将使用Python的tkinter库...

用python怎么做最简单的桌面计算器

有网友问,用python怎么做一个最简单的桌面计算器。如果只强调简单,在本机运行,不考虑安全性和容错等的话,你能想到的最简单的方案是什么呢?我觉得用tkinter加eval就够简单的。现在开整。首先创...

说好的《Think Python 2e》更新呢!

编程派微信号:codingpy本周三脱更了,不过发现好多朋友在那天去访问《ThinkPython2e》的在线版,感觉有点对不住呢(实在是没抽出时间来更新)。不过还好本周六的更新可以实现,要不就放一...

构建AI系统(三):使用Python设置您的第一个MCP服务器

是时候动手实践了!在这一部分中,我们将设置开发环境并创建我们的第一个MCP服务器。如果您从未编写过代码,也不用担心-我们将一步一步来。我们要构建什么还记得第1部分中Maria的咖啡馆吗?我们正在创...

函数还是类?90%程序员都踩过的Python认知误区

那个深夜,你在调试代码,一行行检查变量类型。突然,一个TypeError错误蹦出来,你盯着那句"strobjectisnotcallable",咖啡杯在桌上留下了一圈深色...

《Think Python 2e》中译版更新啦!

【回复“python”,送你十本电子书】又到了周三,一周快过去一半了。小编按计划更新《ThinkPython2e》最新版中译。今天更新的是第五章:条件和递归。具体内容请点击阅读原文查看。其他章节的...

Python mysql批量更新数据(兼容动态数据库字段、表名)

一、应用场景上篇文章我们学会了在pymysql事务中批量插入数据的复用代码,既然有了批量插入,那批量更新和批量删除的操作也少不了。二、解决思路为了解决批量删除和批量更新的问题,提出如下思路:所有更新语...

Python Pandas 库:解锁 combine、update 和compare函数的强大功能

在Python的数据处理领域,Pandas库提供了丰富且实用的函数,帮助我们高效地处理和分析数据。今天,咱们就来深入探索Pandas库中四个功能独特的函数:combine、combine_fi...

记录Python3.7.4更新到Python.3.7.8

Python官网Python安装包下载下载文件名称运行后选择升级选项等待安装安装完毕打开IDLE使用Python...

Python千叶网原图爬虫:界面化升级实践

该工具以Python爬虫技术为核心,实现千叶网原图的精准抓取,突破缩略图限制,直达高清资源。新增图形化界面(GUI)后,操作门槛大幅降低:-界面集成URL输入、存储路径选择、线程设置等核心功能,...

__future__模块:Python语言版本演进的桥梁

摘要Python作为一门持续演进的编程语言,在版本迭代过程中不可避免地引入了破坏性变更。__future__模块作为Python兼容性管理的核心机制,为开发者提供了在旧版本中体验新特性的能力。本文深入...

Python 集合隐藏技能:add 与 update 的致命区别,90% 开发者都踩过坑

add函数的使用场景及错误注意添加单一元素:正确示例:pythons={1,2}s.add(3)print(s)#{1,2,3}错误场景:试图添加可变对象(如列表)会报错(Pytho...

取消回复欢迎 发表评论: