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

引言

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

本文的主要内容有:

1、核心异常类图

2、常见的异常

核心异常的类图

203bfc9639ec44d359eb1a88fd5b79bc.jpeg

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

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

9b415651d42cc97578af0b195f3fdbaf.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/893383.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python学习-怎么在Pycharm写代码

打开Pycharm,点击文件-新建项目 2.选择pure python-点击箭头 展开 3.选择 Existing interpreter 如果 Existing interpreter 下没有相关环境 (1)点击**…** (2)选择python的安装路径 4.可修改文件名称-点击创建 …

二叉搜索树中第 K 小的元素

二叉搜索树中第 K 小的元素 ​ 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。 示例 1: 输入:root [3,1,4,null,2], k 1 输出:1…

QT实现改变窗口大小其子控件也自动调节大小

创建一个顶层布局即可,一定要在MainWindows或者Widget的下面! 观察图标变化 带有禁止的意思是分拆布局(当前无布局) 现在是添加布局后了 注意:一定是在MainWindows或Widget才可以添加顶层布局,才可以实现…

Golang简介

目录 第一章 go语言起源 第一节 go语言发展 1.知名编程语言或系统的发展简吏 2.Go语言的前世今生 3.go语言的核心特性 4.Go语言的优势和其他语言的对比 5.Go开发环境搭建 第二章 go语言Helloworld 一、go项目工程结构 二、执行go程序 三、go程序的解释说明 第三章 g…

29.第二阶段x86游戏实战2-遍历周围-花指令与二叉树数据结构(有如何阅读vm代码混淆代码)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

VmWare下的linux虚拟机磁盘空间扩展

我用vmware开启了一个虚拟机,虚拟机操作系统是centos7。今天发现磁盘空间不够了,导数据到里面的mysql,提示没有空间,之后mysql也连不上了。这个mysql部署在docker里,结果停止都停止不了,强制停止也不行。无…

10-Python基础编程之函数

Python基础编程之函数 概念基本使用参数单个参数多个参数不定长参数缺省参数注意事项 返回值使用描述偏函数高阶函数返回函数匿名函数闭包装饰器生成器递归函数函数的作用域 概念 写了一段代码实现了某个小功能:然后把这些代码集中到一块,起一个名字&am…

五、Spring Boot集成Spring Security之认证流程2

一、Spring Boot集成Spring Security专栏 一、Spring Boot集成Spring Security之自动装配 二、Spring Boot集成Spring Security之实现原理 三、Spring Boot集成Spring Security之过滤器链详解 四、Spring Boot集成Spring Security之认证流程 五、Spring Boot集成Spring Se…

Flink 介绍(特性、概念、故障容错、运维部署、应用场景)

概述 特性 概念 数据流 状态 时间 savepoint 故障容错 运维部署 部署应用到任意地方 Flink能够更方便地升级、迁移、暂停、恢复应用服务 监控和控制应用服务 运行任意规模应用 应用场景 事件驱动型应用 什么是事件驱动型应用? 事件驱动型应用的优势 Flink如何…

OpenCV高级图形用户界面(14)交互式地选择一个或多个感兴趣区域函数selectROIs()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 允许用户在给定的图像上选择多个 ROI。 该函数创建一个窗口,并允许用户使用鼠标来选择多个 ROI。控制方式:使用空格键或…

如何用示波器检测次级点火系统(一)

写在最前面: 单看标题可能会让你觉得这篇文章的主题是关于检测线圈,火花塞和火花塞插头电线。但我们指的是分析燃烧室内电子的行为。目标是看燃料混合物,阀座,压缩,积碳和其它影响这种特性的症状。最终目的是要学会分…

基于springboot vue的音乐播放系统设计与实现

博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…

基于SpringBoot+Vue+uniapp微信小程序的乡村政务服务系统的详细设计和实现(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

RiproV9.0主题wordpress主题免扩展可二开PJ版/WordPress博客主题Ripro全解密无后门版本

🔥🎉 全新RiPro9.0开源版发布 —— 探索无限可能🚀🌐 今天,我很高兴能与大家分享一个重磅资源——RiPro9.0开源版!这不是一个普通的版本,而是一个经过精心打磨、全面解密的力作。🔍…

【顺序表的模拟实现Java】

【顺序表的模拟实现Java】 顺序表的介绍Java代码实现检验代码功能 顺序表的介绍 由于之前在c语言板块写过详细的顺序表介绍,所以这一篇文章主要为Java代码的实现 下面为顺序表介绍的链接,如有需要点击下方链接跳转 c语言顺序表讲解 Java代码实现 pub…

群晖前面加了雷池社区版,安装失败,然后无法识别出用户真实访问IP

有nas的相信对公网都不模式,在现在基础上传带宽能有100兆的时代,有公网代表着家里有一个小服务器,像百度网盘,优酷这种在线服务都能部署为私有化服务。但现在运营商几乎不可能提供公网ip,要么自己买个云服务器做内网穿…

可编辑73页PPT | 企业智慧能源管控平台建设方案

荐言分享:随着全球能源形势的日益紧张和智能化技术的快速发展,企业对于能源的高效利用和精细化管理需求愈发迫切。智慧能源管控平台作为一种集成了物联网、大数据、云计算、人工智能等先进技术的综合管理系统,旨在帮助企业实现能源数据的实时…

Qt学习(一)——win10系统下Qt安装(Qt5.15.2+QtCreator5.0.3+MSVC2019)

win10平台下,Qt Creator 5.0.3 软件About Qt Creator界面如下: 其基于Qt 5.15.2 MSVC2019,64bit,故在用Qt4 设计师自定义控件所设计的控件能够被Qt Creator加载到,就要安装相应版本的Qt和MSVC。此安装便可支持win10系统下的自定义…

数据结构(8.2_1)——插入排序

插入排序 算法思想&#xff1a;每次将一个待排序的记录按其关键字大小插入到前面已排序好的子序列中&#xff0c;直到全部记录插入完成。 代码实现 #include <stdio.h>void InsertSort(int A[], int n) {int i, j.temp;for (i 1; i < n; i) {//将各元素插入已排好…

集成电路公司进销存系统生成合同——未来之窗行业应用跨平台架构

一、进销存生成合同优势 1. 提高效率&#xff1a;节省了手动起草和编辑合同的时间&#xff0c;能够快速生成合同&#xff0c;加快业务流程。 2. 减少错误&#xff1a;避免了人工输入可能导致的拼写、数据错误等&#xff0c;提高合同的准确性和规范性。 3. 数据一致性&#xff…