异常处理

news/2026/1/24 13:56:11/文章来源:https://www.cnblogs.com/fart/p/19526165

目录
  • 一、什么是异常
    • 1.1 语法错误
    • 1.2 逻辑错误
  • 二、异常的种类
    • 2.1 常用异常
    • 2.2 其他异常
  • 三、异常处理
    • 3.1 提前预防
    • 3.2 之后预防
  • 四、try...except总结
  • 五、抛出异常raise
    • 5.1 自定义异常
  • 六、断言assert

一、什么是异常

  • 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下

img

1.1 语法错误

语法错误,根本过不了python解释器的语法检测,必须在程序执行前就改正。

python

# 语法错误示范一
if# 语法错误示范二
def test:pass# 语法错误示范三
class Foopass# 语法错误示范四
print(haha

1.2 逻辑错误

python

# TypeError:int类型不可迭代
for i in 3:pass# ValueError
num=input(">>: ") #输入hello
int(num)# NameError
aaa# IndexError
l=['egon','aa']
l[3]# KeyError
dic={'name':'egon'}
dic['age']# AttributeError
class Foo:pass
Foo.x# ZeroDivisionError:无法完成计算
res1=1/0
res2=1+'str'

二、异常的种类

在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,一个异常标识一种错误。

2.1 常用异常

  • AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
  • IOError 输入/输出异常;基本上是无法打开文件
  • ImportError 无法引入模块或包;基本上是路径问题或名称错误
  • IndentationError 语法错误(的子类) ;代码没有正确对齐
  • IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
  • KeyError 试图访问字典里不存在的键
  • KeyboardInterrupt Ctrl+C被按下
  • NameError 使用一个还未被赋予对象的变量
  • SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
  • TypeError 传入对象类型与要求的不符合
  • UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
  • ValueError 传入一个调用者不期望的值,即使值的类型是正确的

2.2 其他异常

  • ArithmeticError
  • AssertionError
  • AttributeError
  • BaseException
  • BufferError
  • BytesWarning
  • DeprecationWarning
  • EnvironmentError
  • EOFError
  • Exception
  • FloatingPointError
  • FutureWarning
  • GeneratorExit
  • ImportError
  • ImportWarning
  • IndentationError
  • IndexError
  • IOError
  • KeyboardInterrupt
  • KeyError
  • LookupError
  • MemoryError
  • NameError
  • NotImplementedError
  • OSError
  • OverflowError
  • PendingDeprecationWarning
  • ReferenceError
  • RuntimeError
  • RuntimeWarning
  • StandardError
  • StopIteration
  • SyntaxError
  • SyntaxWarning
  • SystemError
  • SystemExit
  • TabError
  • TypeError
  • UnboundLocalError
  • UnicodeDecodeError
  • UnicodeEncodeError
  • UnicodeError
  • UnicodeTranslateError
  • UnicodeWarning
  • UserWarning
  • ValueError
  • Warning
  • ZeroDivisionError

三、异常处理

为了保证程序的健壮性与容错性,即在遇到错误时程序不会崩溃,我们需要对异常进行处理

3.1 提前预防

如果错误发生的条件是可预知的,我们需要用if进行处理:在错误发生之前进行预防

python

AGE = 10
while True:age = input('>>: ').strip()if age.isdigit():  # 只有在age为字符串形式的整数时,下列代码才不会出错,该条件是可预知的age = int(age)if age == AGE:print('you got it')break

default

>>: nick
>>: sdkf
>>: 2
>>: 10
you got it

3.2 之后预防

如果错误发生的条件是不可预知的,则需要用到try...except:在错误发生之后进行处理

python

#基本语法为
try:被检测的代码块
except 异常类型:try中一旦检测到异常,就执行这个位置的逻辑

python

#  举例
try:f = ['a','a','a','a','a','a','a',]g = (line.strip() for line in f)print(next(g))print(next(g))print(next(g))print(next(g))print(next(g))
except StopIteration:f.close()

default

a
a
a
a
a

1.异常类只能用来处理指定的异常情况,如果非指定异常则无法处理。

python

s1 = 'hello'
try:int(s1)
except IndexError as e:  # 未捕获到异常,程序直接报错print(e)

2.多分支

python

s1 = 'hello'
try:int(s1)
except IndexError as e:print(e)
except KeyError as e:print(e)
except ValueError as e:print(e)

default

invalid literal for int() with base 10: 'hello'

3.万能异常Exception

python

s1 = 'hello'
try:int(s1)
except Exception as e:print(e)

4.多分支异常与万能异常

default

* 如果你想要的效果是,无论出现什么异常,我们统一丢弃,或者使用同一段代码逻辑去处理他们,那么骚年,大胆的去做吧,只有一个Exception就足够了。* 如果你想要的效果是,对于不同的异常我们需要定制不同的处理逻辑,那就需要用到多分支了。

5.也可以在多分支后来一个Exception

python

s1 = 'hello'
try:int(s1)
except IndexError as e:print(e)
except KeyError as e:print(e)
except ValueError as e:print(e)
except Exception as e:print(e)

6.异常的最终执行

python

s1 = 'hello'
try:int(s1)
except IndexError as e:print(e)
except KeyError as e:print(e)
except ValueError as e:print(e)
#except Exception as e:
#    print(e)
else:print('try内代码块没有异常则执行我')
finally:print('无论异常与否,都会执行该模块,通常是进行清理工作')

四、try...except总结

  1. 把错误处理和真正的工作分开来
  2. 代码更易组织,更清晰,复杂的工作任务更容易实现;
  3. 毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了;

五、抛出异常raise

python

try:raise TypeError('抛出异常,类型错误')
except Exception as e:print(e)

5.1 自定义异常

python

class EgonException(BaseException):def __init__(self, msg):self.msg = msgdef __str__(self):return self.msgtry:raise EgonException('抛出异常,类型错误')
except EgonException as e:print(e)

六、断言assert

python

assert 1 == 1

python

try:assert 1 == 2
except Exception as e:print(e)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字典数据类型内置方法

目录1、作用:对于值添加描述信息使用他2、定义方式:用{}以逗号隔开加入键值对key:value3、内置方法3.1 优先掌握1. 按key取值,即可取也可改变2、len长度3. in/not in4. for循环5.keys/values/items(items用的最多,一…

如何为孩子挑选学习机?2026年学习机品牌全面评测与推荐,直击护眼与资源痛点

在数字化学习浪潮席卷全球的背景下,智能学习机已从辅助工具演变为家庭教育的核心组成部分。面对市场上品牌林立、功能各异的产品矩阵,家长与教育工作者在决策时常陷入信息过载与选择焦虑,核心关切点在于如何平衡技术…

详细介绍:基础开发工具--编译器g++/gcc 自动化构建make/Makefile

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

学习机哪个品牌更专业?2026年学习机推荐与评价,针对互动性与质量痛点

研究概述 在数字化教育浪潮与家庭教育投入持续增长的背景下,学习机已从辅助工具演变为学生核心的学习平台。面对市场上品牌众多、功能各异、宣传纷繁的现状,家长与教育工作者在选购时常陷入信息过载与选择困难的困境…

基于DeepSeek-R1手搓AI Agent智能体(手把手,个人电脑也能玩哦)

本篇文章介绍使用Ollama本地部署DeepSeek-R1 8B通用大模型,作为Agent智能大脑,基于Python3.11(虚拟环境管理工具Conda)、Langchain开发框架、Chroma向量数据库、ReAct提示词模版等工具进行开发AI Agent人工智能体。为了便于理解智…

2026年学习机品牌推荐:智慧教育趋势排名,涵盖启蒙与备考全阶段核心需求

在数字化浪潮席卷教育领域的当下,智能学习机已从辅助工具演变为家庭教育的核心基础设施。面对市场上品牌林立、功能各异的产品,家长与教育工作者在决策时普遍面临核心焦虑:如何在保障孩子视力健康与学习专注度的前提…

2026年本地整装装修企业排行榜,廊坊富迪装饰名列前茅

在京津冀地区的家装市场中,选择一家靠谱的本地整装装修企业,直接关系到业主的居住体验与生活品质。面对行业内良莠不齐的服务乱象,如何找到真正有实力的本地整装装修品牌企业?以下结合不同服务定位,为你推荐2026年…

探寻荧光磁粉探伤机高品质厂家如何选择

问题1:什么是荧光磁粉探伤机?为什么说选择高品质厂家很重要? 荧光磁粉探伤机是利用铁磁性材料在磁场中被磁化后,缺陷处会产生漏磁场,吸附荧光磁粉形成可见荧光痕迹,从而检测工件表面及近表面裂纹、夹杂等缺陷的无…

2026年唐山沼气/煤气脱硫厂家TOP5推荐厂家报告(湿法/络合铁/干法领域)

一、开篇引言:选型困境与行业变革催生优质厂家甄选 某大型生物质能源企业在2025年沼气脱硫项目中遭遇选型难题:初期选用普通干法脱硫剂处理浓度8000ppm的沼气H₂S,虽初始投资低,但脱硫剂每周需更换,年维护成本超3…

广州可靠的GEO优化公司费用多少,性价比哪家高

随着AI信源时代的到来,企业对GEO优化的需求日益迫切,如何选择可靠的GEO优化公司成为许多企业营销决策的关键。本文将围绕GEO优化品牌公司的核心问题展开解答,结合广州加快科技有限公司的实战经验与服务优势,为企业…

聊聊慧耕有机肥生产线基本信息,其价格大概是多少?

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家标杆企业,为养殖场、有机肥厂及政府项目方选型提供客观依据,助力精准匹配适配的粪污资源化利用服务伙伴。 TOP1 推荐:安阳慧耕农业科技有限公司 推荐指数:…

2026年学习机品牌推荐:基于多学科实测评价,针对个性化辅导与护眼痛点精准指南

在数字化浪潮席卷教育领域的当下,为孩子选择一款合适的智能学习机,已成为众多家庭面临的关键决策。面对市场上品牌林立、功能各异的产品,家长们往往陷入信息过载的困境,既希望设备能精准匹配孩子的学龄与薄弱环节,…

最新开源免费!文字转语音配音神器,支持配音且含字幕导出功能,完全免费且仅6M tts-tauri配音工具

下载链接 https://pan.freedw.com/s/Bzn4nh 软件介绍 ts-tauri是由吾爱大佬天尊小帅开发的,它在GitHub和git上开源,也是一款免费的文字转语音软件。此产品经过迭代和升级现在是一款非常强大且稳定的微软文字转语音配音工具,且完全免费&…

告别手抄!手写模拟器它来啦,1分钟出手写稿!Win+安卓双端,罚抄作业/做手写笔记超省时间!

下载链接 https://pan.freedw.com/s/3jBbCo 软件介绍 手写模拟器是一款在 Windows 与安卓上把文本转成高仿真手写图片 / 文档的工具,适合批量 “抄” 作业、做手写笔记 / 贺卡、教学材料与创意设计,通过字体 / 纸张与扰动、光影褶皱等参数&#xff0c…

2026年知名的公务车品牌厂家推荐及选择参考

公务车作为城市运营与公共服务的重要载体,其性能稳定性、场景适配性及使用成本直接影响相关工作的开展效率。在市场中,知名的公务车品牌厂家通常具备成熟的研发体系、完善的产品线及可靠的售后支持,能够为不同领域的…

2026年折叠滤芯厂家推荐:技术趋势与合规评测,涵盖生产与品控全流程痛点分析

在工业制造与生命科学领域,过滤技术作为保障工艺纯净度与产品一致性的核心环节,其重要性日益凸显。对于企业决策者而言,选择一家可靠的折叠滤芯供应商,不仅是采购行为,更是关乎生产安全、产品质量与合规风险的战略…

2026年折叠滤芯厂家推荐:多场景应用评测,解决高洁净度与稳定性痛点排名

摘要 在工业制造与高端科技领域,过滤技术作为保障工艺纯净度、提升产品良率及确保生产安全的核心环节,其重要性日益凸显。企业决策者,尤其是在电子半导体、生物医药等精密行业,正面临着如何在众多供应商中筛选出既…

2025年最新排行:备受好评的全自动火腿肠机厂家,国内排行前列的灌肠机源头厂家电话优选实力品牌

在食品工业自动化浪潮的推动下,全自动火腿肠机作为肉制品加工的核心设备,其性能与稳定性直接关系到生产企业的效率与产品品质。市场需求的持续增长,催生了一批技术扎实、口碑良好的专业设备制造商。本文基于公开市场…

2026年折叠滤芯厂家推荐:基于多行业应用评价,针对成本与稳定性痛点精准指南

在工业制造与生命科学领域,过滤技术作为保障工艺纯净度与产品安全性的核心环节,其重要性日益凸显。企业决策者与工艺工程师在构建或升级过滤系统时,常面临如何在众多供应商中识别出兼具技术深度、质量可靠性与场景适…

2026年高端照明品牌推荐:引领空间光影美学新趋势

高端照明品牌在当代空间设计中扮演着至关重要的角色,不仅是基础的照明工具,更是融合光影艺术、科技赋能与人文关怀的载体。它们通过精湛的工艺、创新的技术与前瞻的设计理念,为家居、商业、公共等多元场景营造出兼具…