Python3 错误和异常
Python3 错误和异常
作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍。
Python 有两种错误很容易辨认:语法错误和异常。
Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。

标准异常如下列表
| 异常名称 | 描述 |
|---|---|
| Exception | 所有异常的基类 |
| StopIteration | 当一个迭代器的 next()方法不指向任何对象时引发 |
| SystemExit | 由 sys.exit()函数引发 |
| StandardError | 除了StopIteration异常和SystemExit,所有内置异常的基类 |
| ArithmeticError | 数值计算所发生的所有错误的基类 |
| OverflowError | 当数字类型计算超过最高限额引发 |
| FloatingPointError | 当一个浮点运算失败时触发 |
| ZeroDivisonError | 当除运算或模零在所有数值类型运算时引发 |
| AssertionError | 断言语句失败的情况下引发 |
| AttributeError | 属性引用或赋值失败的情况下引发 |
| EOFError | 当从 raw_input() 与 input() 函数输入,到达文件末尾时触发 |
| ImportError | 当一个 import 语句失败时触发 |
| KeyboardInterrupt | 当用户中断程序执行,通常是通过按 Ctrl+c 引发 |
| LookupError | 所有查找错误基类 |
| IndexErrorKeyError | 当在一个序列中没有找到一个索引时引发当指定的键没有在字典中找到引发 |
| NameError | 当在局部或全局命名空间中找不到的标识引发 |
| UnboundLocalErrorEnvironmentError | 试图访问在函数或方法的局部变量时引发,但没有值分配给它。Python环境之外发生的所有异常的基类。 |
| IOErrorIOError | 当一个输入/输出操作失败,如打印语句或 open()函数试图打开不存在的文件时引发操作系统相关的错误时引发 |
| SyntaxErrorIndentationError | 当在Python语法错误引发;没有正确指定缩进引发。 |
| SystemError | 当解释器发现一个内部问题,但遇到此错误时,Python解释器不退出引发 |
| SystemExit | 当Python解释器不使用sys.exit()函数引发。如果代码没有被处理,解释器会退出。当操作或函数在指定数据类型无效时引发 |
| ValueError | 在内置函数对于数据类型,参数的有效类型时引发,但是参数指定了无效值 |
| RuntimeError | 当生成的错误不属于任何类别时引发 |
| NotImplementedError | 当要在继承的类来实现,抽象方法实际上没有实现时引发此异常 |
在Python中断言
断言是一种理智检查,当程序的测试完成,你可以打开或关闭。
断言的最简单的方法就是把它比作 raise-if 语句 (或者更准确,加 raise-if-not 声明). 一个表达式进行测试,如果结果出现 false,将引发异常。
断言是由 assert 语句,在Python中新的关键字,在Python1.5版本中引入使用的关键字。
程序员常常放置断言来检查输入的有效,或在一个函数调用后检查有效的输出。
assert 语句当它遇到一个断言语句,Python评估计算之后的表达式,希望是 true 值。如果表达式为 false,Python 触发 AssertionError 异常。
断言的语法是 -
assert Expression[, Arguments]
如果断言失败,Python使用 ArgumentExpression 作为AssertionError异常的参数。AssertionError异常可以被捕获,并用 try-except语句处理类似其他异常,但是,如果没有处理它们将终止该程序并产生一个回溯。
示例这里是一个把从开氏度到华氏度的温度转换函数。
#!/usr/bin/python3
def KelvinToFahrenheit(Temperature):assert (Temperature >= 0),"Colder than absolute zero!"return ((Temperature-273)*1.8)+32print (KelvinToFahrenheit(273))
print (int(KelvinToFahrenheit(505.78)))
print (KelvinToFahrenheit(-5))
当执行上面的代码,它产生以下结果 -
32.0
451
Traceback (most recent call last):
File "test.py", line 9, in
print KelvinToFahrenheit(-5)
File "test.py", line 4, in KelvinToFahrenheit
assert (Temperature >= 0),"Colder than absolute zero!"
AssertionError: Colder than absolute zero!
except子句中无异常
也可以使用 except 语句定义如下无异常声明如下 -
try:You do your operations here......................
except:If there is any exception, then execute this block.......................
else:If there is no exception then execute this block.
except子句与多个异常
也可以使用相同的 except 语句来处理多个异常,具体如下 -
try:You do your operations here......................
except(Exception1[, Exception2[,...ExceptionN]]]):If there is any exception from the given exception list, then execute this block.......................
else:If there is no exception then execute this block.
try/except…else
try/except 语句还有一个可选的 else 子句,如果使用这个子句,那么必须放在所有的 except 子句之后。
else 子句将在 try 子句没有发生任何异常的时候执行。

以下实例在 try 语句中判断文件是否可以打开,如果打开文件时正常的没有发生异常则执行 else 部分的语句,读取文件内容:
for arg in sys.argv[1:]:try:f = open(arg, 'r')except IOError:print('cannot open', arg)else:print(arg, 'has', len(f.readlines()), 'lines')f.close()
使用 else 子句比把所有的语句都放在 try 子句里面要好,这样可以避免一些意想不到,而 except 又无法捕获的异常。
异常处理并不仅仅处理那些直接发生在 try 子句中的异常,而且还能处理子句中调用的函数(甚至间接调用的函数)里抛出的异常。例如:
>>> def this_fails():x = 1/0>>> try:this_fails()except ZeroDivisionError as err:print('Handling run-time error:', err)Handling run-time error: int division or modulo by zero
try-finally 语句
try-finally 语句无论是否发生异常都将执行最后的代码。

以下实例中 finally 语句无论异常是否发生都会执行:
try:runoob()
except AssertionError as error:print(error)
else:try:with open('file.log') as file:read_data = file.read()except FileNotFoundError as fnf_error:print(fnf_error)
finally:print('这句话,无论异常是否发生都会执行。')
相关文章:
Python3 错误和异常
Python3 错误和异常 作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍。 Python 有两种错误很容易辨认:语法错误和异常。 Python assert(断…...
程序人生 - 学习和分享
文章目录记于 230217学习安排泛学AI 和 未来记于 230217 刚入行时,经常看到技术博客中,博主们分享生活,比如相亲、上班生活,甚至还有人发结婚照。这个栏目通常被称为:程序人生。 这个现象已经很久没看到了,…...
基于树莓派的智能家居项目整理
一、功能介绍 二、设计框图 三、实物展示 四、程序 一、功能介绍硬件:树莓派3B、LD3320语音识别模块、pi 摄像头、继电器组、小灯、火焰传感器、蜂鸣器、电 磁锁 项目框架: 采用了简单工厂模式的一个设计方式。稳定,拓展性…...
《洛阳冬冷》
——洛阳的冬天太冷,最暖不过你的眼神。 ******* 她拿了个画着几丛竹子的小团扇子一路分花拂柳地往前走,后面一水儿的侍女不敢出声,只得地默默跟着她。她一张脸本来生得就好看,这一怒起来竟然还更加的好看了。此时她走得太急&…...
YOLOv5简介
YOLOv5 一、输入端 1. Mosaic数据增强: CutMix 数据增强:随机生成一个裁剪框Box,裁剪掉A图中的相应位置,然后用B图相应位置的ROI放到A中被裁剪的区域中形成新的样本。采用加权求和的方式计算损失,将A区域中被cut掉的…...
【面向对象语言三大特性之 “继承”】
目录 1.继承的概念及定义 1.1继承的概念 1.2 继承定义 1.2.1定义格式 1.2.2继承关系和访问限定符 1.2.3继承基类成员访问方式的变化 2.基类和派生类对象赋值转换 3.继承中的作用域 4.派生类的默认成员函数 5.继承与友元 6. 继承与静态成员 7.复杂的菱形继承及菱形虚拟…...
Ambari2.7.5集群搭建详细流程
0 说明 本文基于本地虚拟机从零开始搭建ambari集群 1 前置条件 1.1 本地虚拟机环境 节点角色ambari-1ambari-server ambari-agentambari-2ambari-agentambari-3ambari-agent 1.2 安装包 1.3 修改主机名并配置hosts文件 hostnamectl set-hostname ambari-1 hostnamectl se…...
房产|1月全国70城房价出炉!疫情放开后你关心的城市房价有何变化
2023年1月份,70个大中城市中新房销售价格环比上涨城市个数增加;一线城市新房销售价格环比同比转涨、二三线城市环比降势趋缓,二三线城市同比下降。 | 新房/二手房12月-1月环比上涨城市数量变化 70个大中城市中,新房环比上涨城市…...
秒验 重新定义“一键登录”
现如今,一般APP在注册登录时,仍然要经历填写用户名、密码、绑定手机号等一系列传统流程,有的人认为可以通过第三方登录避免这些流程,但仍旧要经历手机验证码的环节,而且存在验证码被拦截的风险,短信费用也很…...
ZenBuster:一款功能强大的多线程跨平台URL枚举工具
关于ZenBuster ZenBuster是一款功能强大的多线程跨平台URL枚举工具,该工具基于Python开发,同时还具备暴力破解功能。 该工具适用于安全专业人员,可以在渗透测试或CTF比赛中为广大研究人员提供帮助,并收集和目标相关的各种信息。…...
2023年美赛ICM问题E:光污染 这题很好做啊!
2023年美赛ICM问题E:光污染 这题很好做啊! 我看到DS数模的分析,看似头头是道,实则GouPi不通,我出一个,用于大家…...
InVEST模型 | 01 InVEST模型安装(Windows10)
除了在Python Anaconda环境中进行安装InVEST模型Python安装,平时最常使用的安装方式是通过.exe直接进行安装,本节介绍的就是直接下载安装的步骤: 打开InVEST模型下载页面 链接为:https://naturalcapitalproject.stanford.edu/…...
spring-web InvocableHandlerMethod 源码分析
说明 本文基于 jdk 8, spring-framework 5.2.x 编写。author JellyfishMIX - github / blog.jellyfishmix.comLICENSE GPL-2.0 类层次 HandlerMethod,处理器的方法的封装对象。HandlerMethod 只提供了处理器的方法的基本信息,不提供调用逻辑。 Invoca…...
一分钟了解微信公众号服务器配置自动回复
1、建一个web服务工程 2、开放任意一个接口, 比如 /aaa/bbb/ccc 把接口路径配置在这里,ip为公网ip或域名,其他的参数默认,对入门选手没啥用 3、该接口允许get和post两种方式访问,接口需要对于访问方式编写两套逻辑…...
打印不同的图形-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)
【案例4-1】打印不同的图形 记得 关注,收藏,评论哦,作者将持续更新。。。。 【案例介绍】 案例描述 本案例要求编写一个程序,可以根据用户要求在控制台打印出不同的图形。例如,用户自定义半径的圆形和用户自定义边长的…...
14. QT_OPenGL中引入顶点着色器和片段着色器
1. 说明: 着色器是OPenGL中非常重要的一部分,在有了模型后,如果未给模型添加着色器,那么渲染效果会折扣很多。着色器中使用到的语言是GLSL(OPenGL Shader Language),可以通过这篇文章GLSL基本语法进行了解。 效果展示:…...
ecaozzz
2. 图形报表ECharts 2.1 ECharts简介 ECharts缩写来自Enterprise Charts,商业级数据图表,是百度的一个开源的使用JavaScript实现的数据可视化工具,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/…...
应用部署初探:6个保障安全的最佳实践
在之前的文章中,我们了解了应用部署的阶段以及常见的部署模式,包括微服务架构的应用应该如何部署等基本内容。本篇文章将介绍如何安全地部署应用程序。 安全是软件开发生命周期(SDLC)中的关键部分,同时也需要成为 S…...
转转测试环境docker化实践
测试环境对于任何一个软件公司来讲,都是核心基础组件之一。转转的测试环境伴随着转转的发展也从单一的几套环境发展成现在的任意的docker动态环境docker稳定环境环境体系。期间环境系统不断的演进,去适应转转集群扩张、新业务的扩展,走了一些…...
linux 之 ps命令介绍
哈喽,大家好,我是有勇气的牛排(全网同名)🐮 有问题的小伙伴欢迎在文末评论,点赞、收藏是对我最大的支持!!!。 前言 如过想实现对进程监控,就需要使用到ps命…...
计算机毕业设计springboot英语学习网站 基于SpringBoot的在线英语教育平台设计与实现 SpringBoot框架下的智能化英语辅助学习系统开发
计算机毕业设计springboot英语学习网站3i8387gp (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。全球化时代对英语能力的需求日益增长,信息技术在教育领域的广泛应用推…...
Vitis AI Docker镜像选型指南:CPU版、GPU版与云端优化实战心得
Vitis AI Docker镜像选型指南:CPU版、GPU版与云端优化实战心得 在AI模型部署的实践中,资源约束与成本效率往往是开发者面临的核心挑战。当我们需要将训练好的模型部署到边缘设备时,如何在有限的本地计算资源下高效完成模型优化与编译…...
避坑指南:CentOS7部署LibreNMS常见错误及解决方案
CentOS7部署LibreNMS避坑实战:从SELinux到数据库权限的深度排错指南 对于网络监控系统的部署,LibreNMS以其开源特性和强大功能成为众多技术团队的首选。但在CentOS7环境下,从系统配置到服务调优的每个环节都可能成为阻碍顺利部署的暗礁。本文…...
【windows】VirtualBox网络配置及实战-Host Only 仅主机模式
1.概述 仅 主 机 网 络 : 用 来 创 建 一 个 包 含 主 日 一 组 虚拟机的 网 络 , 而 不 需 要 主 机 的 物 理 网 络 接 口 .相反 ,在虚拟机上创建了一个类似于环回接口的虚拟网络接口。提 供 虚 似 机 和 主 机 之 间 的 连 接 …...
如何为你的单片机项目选择最佳通信协议?I²C、SPI、UART全解析
单片机通信协议深度指南:从理论到实战的精准选择策略 当你的单片机需要与外部世界对话时,选择正确的通信协议就像为不同场合挑选合适的语言——商务会议需要正式严谨,朋友聊天则讲究轻松随意。在嵌入式系统设计中,UART、IC和SPI这…...
消费级显卡也能跑!cv_resnet101_face-detection_cvpr22papermogface GPU算力适配实战
消费级显卡也能跑!cv_resnet101_face-detection_cvpr22papermogface GPU算力适配实战 1. 项目简介与核心价值 今天给大家分享一个特别实用的人脸检测工具——基于MogFace模型的高精度人脸检测系统。这个工具最大的亮点就是消费级显卡就能流畅运行,不需…...
毕业季、返修季、投稿季:SCI论文润色,到底能不能提高接收率?
“SCI论文如果先润色,再投稿,是不是更容易被接收?”这个问题,真的每年到了这个时间点都会高频出现。尤其是3月底到4月初,很多同学刚从基金申请、毕业论文、返修修改的高压节奏里缓过来,马上又进入下一轮“赶…...
AD7606模数转换器的FPGA驱动设计与实现(串行/并行双模式解析)
1. AD7606模数转换器核心特性解析 AD7606这颗16位模数转换芯片在工业现场堪称"数据捕手",我经手过的电力监控、振动分析项目中都能看到它的身影。与普通ADC不同,它最吸引工程师的特性是双模数据输出——就像高速公路的ETC和人工通道可以并行运…...
6.其他计算机系统基础知识
一、其他计算机系统基础知识 00:00 1. 计算机语言 00:31 1)计算机语言的概念 01:56 定义: 用于人与计算机之间交流的语言,是传递信息的媒介组成结构: 表达式: 包含变量、常量、字面量和运算符流程控制: 包括分支、循…...
【AI平台】n8n进阶指南:Docker环境下无缝更新与配置保留实战
1. 为什么需要无缝更新n8n? 如果你正在使用n8n这个强大的工作流自动化工具,肯定会遇到版本更新的问题。作为一个长期使用n8n的开发者,我深刻理解那种"既想用新功能又怕配置丢失"的矛盾心理。每次看到n8n后台的更新提示,…...
