Python基础 常见的异常类型 异常的捕获 异常的处理机制

简介: python中常见的异常类型1、ZeroDivisionError 除(或取模)零(所有数据类型)2、IndexError #序列中没有此索引3、KeyError #映射中没有这个键4、NameError #未声明/初始化对象(没有属性)5、SyntaxError #Python 语法错误6、ValueError #传入无效的参数


python中常见的异常类型
1、ZeroDivisionError     除(或取模)零(所有数据类型)
2、IndexError        #序列中没有此索引
3、KeyError      #映射中没有这个键
4、NameError     #未声明/初始化对象(没有属性)
5、SyntaxError       #Python 语法错误
6、ValueError        #传入无效的参数

数字运算异常

print(10/0) #ZeroDivisionError 除数不能为0,所以运算异常

索引异常(使用的索引没有元素)

lst=[11,22,33,44]
print(lst[4]) #IndexError 索引从0开始,lst列表最大的索引就是3

键异常(字典里没有这个键)

dic={"name":"张三","age":20}
print(dic["gender"]) #keyError 字典里没有这个键

变量异常(未命名该变量)

print(num) #NameError num变量未命名

语法错误

int a=20 #SyntaxError python语法错

传入无效参数

a=int("hello") #ValueError int()里只能放入整数,不能放入字符串
traceback模块
使用traceback模块打印异常信息
import traceback
try:

print("1.--------------")
num=10/0

except:

traceback.print_exc()

​​

Python的异常处理机制

异常捕获处理:
try: except xxx:语句 xxx为错误类型

try:用于放入容易出错的代码
except用于处理异常并正常输出后续代码,可以使代码不会报错结束,可以出现多个except语句来处理多种异常类型。
使用方式:
try:
将容易出错的代码放入其中
易出错代码
易出错代码
except 可能出现的类型: (except可多次使用)
print(捕获异常后用于提示的话语)
except 可能出现的类型:
print(捕获异常后用于提示的话语)
一般的代码块

一般代码

a=int(input("请输入第一个整数:"))
b=int(input("请输入第二个整数:"))
result=a/b
print("结果为:",result)

极容易出现报错,导致终止后面的程序,比如整除不能输入0,不能输入英文,只要输入了,那么就会报错结束程序

使用try...except的代码块

try: #将易错代码放进去

a=int(input("请输入第一个整数:"))
b=int(input("请输入第二个整数:"))
result=a/b
print("结果为:",result)

except ZeroDivisionError: #不允许被0除的异常(异常类型在程序报错时会出现,将这种异常类型放入后,出现该异常就会自动处理,而不会报错终止程序)

print("对不起,除数不允许为0")  #出现该异常后的提示

except ValueError: #输入异常,int括号里的input只能输入数字串,不能输入字符串

print("只能输入数字串")   #出现该异常后的提示

print("程序结束") #程序可能出现的异常都用except写出来了,所以不管出现什么异常,后面的程序一样运行

try...except...else结构

如果try块中没有抛出异常,则执行else块,如果try中抛出异常,则执行except块

try块中放入可能出异常的代码块
except块中输入可能出现异常的类型,在不知道可能出现什么异常可以用BaseException来代替所有出现的异常
BaseException as e的意思是给BaseException取个别名e,在这块里使用时就可以不用再写那么长的代码了
else块在这里的意思是,如果程序未出现异常,则执行else块里的代码
try:

n1=int(input("请输入一个整数:"))
n2=int(input("请输入另一个整数:"))
result=n1/n2

except块中输入可能出现异常的类型,在不知道可能出现什么异常可以用BaseException来代替所有出现的异常

BaseException as e的意思是给BaseException取个别名e,在这块里使用时就可以不用再写那么长的代码了

except BaseException as e:

print("出错了")    #若出错了,则打印出错了
print(e)    #输出出错类型

else块在这里的意思是,如果程序未出现异常,则执行else块里的代码

else:

print("结果为:",result)    #返回结果result

try...except...else...finally结构
finally 块无论是否发生异常都会被执行,能常用来释放try块申请的资源
try:

n1=int(input("请输入一个整数:"))
n2=int(input("请输入另一个整数:"))
result=n1/n2

except块中输入可能出现异常的类型,在不知道可能出现什么异常可以用BaseException来代替所有出现的异常

BaseException as e的意思是给BaseException取个别名e,在这块里使用时就可以不用再写那么长的代码了

except BaseException as e:

print("出错了")    #若出错了,则打印出错了
print(e)    #输出出错类型

else块在这里的意思是,如果程序未出现异常,则执行else块里的代码

else:

print("结果为:",result)    #返回结果result

finally块在这里的意思是,不管上面的程序出错还是不出错,执行完后都要执行finally里的代码,然后继续执行后面的代码

finally:

print("无论是否产生异常,总会被执行的代码")

print("程序结束") #try...except...else...finally结构的代码执行完后继续正常执行后面的代码

相关文章
|
13天前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
187 102
|
2月前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
171 3
|
2月前
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
99 0
|
2月前
|
IDE API 开发工具
Python类型注解:让代码“开口说话”的隐形助手
Python类型注解为动态语言增添类型信息,提升代码可读性与健壮性。通过变量、函数参数及返回值的类型标注,配合工具如mypy、IDE智能提示,可提前发现类型错误,降低调试与协作成本。本文详解类型注解的实战技巧、生态支持及最佳实践,助你写出更高质量的Python代码。
124 0
|
5月前
|
Python
Python技术解析:了解数字类型及数据类型转换的方法。
在Python的世界里,数字并不只是简单的数学符号,他们更多的是一种生动有趣的语言,用来表达我们的思维和创意。希望你从这个小小的讲解中学到了有趣的内容,用Python的魔法揭示数字的奥秘。
128 26
|
5月前
|
人工智能 C# Python
处理python异常
本文介绍了Python中的异常处理机制,并实现了一个简单的异常装饰器。通过`try/except`语句捕获异常,结合`finally`子句完成清理工作。为进一步优化代码结构,文章提出了使用装饰器处理异常的方法,避免函数中大量冗长的异常处理语句。通过类封装异常装饰器,多个函数可共享异常处理逻辑,提升代码简洁性和可维护性。总结强调了装饰器在异常处理中的优势,使代码更加优雅高效。
126 27
|
4月前
|
测试技术 Python
Python测试报告生成:整合错误截图,重复用例执行策略,调整测试顺序及多断言机制。
如何组织这一切呢?你可以写一本名为“Python测试之道”的动作指南手册,或者创建一个包含测试策略、测试顺序、多断言机制的脚本库。只要你的测试剧本编写得足够独到,你的框架就会像一位执行任务的超级英雄,将任何潜伏于代码深处的错误无情地揪出来展现在光天化日之下。这些整理好的测试结果,不仅有利于团队协作,更像冒险故事中的精彩篇章,带给读者无尽的探索乐趣和深刻的思考。
111 10
|
5月前
|
人工智能 安全 IDE
Python 的类型安全是如何实现的?
本文探讨了 Python 的类型安全实现方式。从 3.5 版本起,Python 引入类型提示(Type Hints),结合静态检查工具(如 mypy)和运行时验证库(如 pydantic),增强类型安全性。类型提示仅用于开发阶段的静态分析,不影响运行时行为,支持渐进式类型化,保留动态语言灵活性。泛型机制进一步提升通用代码的类型安全性。总结而言,Python 的类型系统是动态且可选的,兼顾灵活性与安全性,符合“显式优于隐式”的设计哲学。
|
存储 安全 Java
解释Python中的引用和赋值机制。
Python中,变量是对象引用,不存储数据,而存数据在内存的位置。赋值(=)创建变量并让其指向内存中的对象。当多个变量指向同一对象时,它们共享引用。Python使用引用计数管理对象生命周期,对象引用为0时回收。了解这些机制对优化内存使用和防止内存泄漏很重要。例如: ```markdown ```python a = 5 b = a # b引用了同一数字5 del a # 数字5的引用计数仍为1,未被回收 ``` 引用计数并非唯一机制,Python还采用其他策略处理循环引用等复杂情况。
169 2
|
存储 安全 Java
在Python中,引用和赋值机制是理解变量和数据对象之间关系的关键
【6月更文挑战第16天】Python变量是对象引用,不存储数据,指向内存中的对象。赋值`=`创建引用,不复制对象。`b = a`时,a和b指向同一对象。引用计数管理对象生命周期,垃圾回收在引用数为0时回收对象。理解这些机制对优化内存使用关键。
194 7

热门文章

最新文章

推荐镜像

更多