吾爱乐享
个人学习博客

python学习之异常处理的几种方式,附案例

try:

可能会出现的异常的,写在try里面

except 具体异常的信息 as 别名

如:

try:
file =open(‘test.txt’,’w’,encoding=’utf-8′)
res = file.read()#进行读操作,异常可能会出现在这里

except BaseException as e:#只要是常规错误都能打印
file.write(‘出现异常:{}’.format(e))#出现异常把异常信息写入到file文件中,e是异常取的别名
print(‘有这条信息说明进入到了异常信息里面’)

a30fa572000947bd97d990b1b8fd6def.png

0519fb1e0cb044bd85cfa4ad1aeea326.png

异常被写入到了test.txt文件中,except BaseExecption 这个常规异常,只要是常规的异常都会被写入到文件中,有时候我们不需要一些没有的异常被写入,此时,我们就需要进行对异常进行分类,定位可能属于哪种异常,然后精准的抛出异常,

比如上一个问题,我们就知道,try里面可能会抛出的异常就是读写的异常,此时,我们就可以对异常进行精准的抛出

execpt 后面就可以写成 execpt IOError 就可以抓取到对应的错误

try:
file =open(‘test.txt’,’w’,encoding=’utf-8′)
res = file.read()#进行读操作,异常可能会出现在这里
except IOError as e:#只要是常规错误都能打印
file.write(‘出现异常:{}’.format(e))#出现异常把异常信息写入到file文件中,e是异常取的别名
print(‘有这条信息说明进入到了异常信息里面’)

37d8784c01ab4ad197e88605f027344b.png

如果我们把异常写错,就会抛出新的异常,如,本来我们可能会出现的异常类型为读写类型的,结果把execpt后面写成变量变量名错误,那就会抛出新的异常

try:
file =open(‘test.txt’,’w’,encoding=’utf-8′)
res = file.read()#进行读操作,异常可能会出现在这里
except NameError as e:#只要是常规错误都能打印
file.write(‘出现异常:{}’.format(e))#出现异常把异常信息写入到file文件中,e是异常取的别名
print(‘有这条信息说明进入到了异常信息里面’)

17aff077b90544bca25c635bd0d2d97d.png

# filetry:
#     file =open(‘test.txt’,’w’,encoding=’utf-8′)
#     res = file.read()#进行读操作,异常可能会出现在这里
# except BaseException as e:#只要是常规错误都能打印
#     file.write(‘出现异常:{}’.format(e))#出现异常把异常信息写入到file文件中,e是异常取的别名
#     print(‘有这条信息说明进入到了异常信息里面’)
#
# try:
#     file =open(‘test.txt’,’w’,encoding=’utf-8′)
#     res = file.read()#进行读操作,异常可能会出现在这里
# except NameError as e:#只要是常规错误都能打印
#     file.write(‘出现异常:{}’.format(e))#出现异常把异常信息写入到file文件中,e是异常取的别名
#     print(‘有这条信息说明进入到了异常信息里面’)

try:
file =open(‘test.txt’,’w’,encoding=’utf-8′)
res = file.read()#进行读操作,异常可能会出现在这里
except IOError as e:#只要是常规错误都能打印
file.write(‘出现异常:{}’.format(e))#出现异常把异常信息写入到file文件中,e是异常取的别名
print(‘有这条信息说明进入到了异常信息里面’)

多异常处理​

如果try可能会出现多个异常,此时就可以+定义多个execpt 此时只要有一处异常出现,就会停止后面的操作,对应的异常就会出现在对应execpt里面

L=[1,2,3,4]#定义了一个列表
try:
file =open(‘test.txt’,’w’,encoding=’utf-8′)
print(L[4])#取出列表中的索引为4的值,很明显列表中最大的索引是3,会抛出异常
res = file.read()#进行读操作,异常可能会出现在这里
except IOError as e:#只要是常规错误都能打印
file.write(‘出现异常:{}’.format(e))#出现异常把异常信息写入到file文件中,e是异常取的别名
print(‘有这条信息说明进入到了异常信息里面’)
except IndexError as e:#定义索引异常的错误,如果出现索引异常就会执行这里面的代码
file.write(‘索引异常:{}’.format(e))#如果出现索引异常就写入到file文件中
print(‘如果出现该内容说明已经出现了索引异常’)

f2afea25e5fe4c27b86fca1411da72f0.pnga08c18805fbd4607809567e6afbe8e4e.png

也可以把两个不同的异常写在一个execpt中,如 execpt (IOError,NameError )as e此时只要满足其中一个就可以进入到execpt中把异常写入到文件中

L=[1,2,3,4]#定义了一个列表
try:
file =open(‘test.txt’,’w’,encoding=’utf-8′)
print(L[4])#取出列表中的索引为4的值,很明显列表中最大的索引是3,会抛出异常
res = file.read()#进行读操作,异常可能会出现在这里
except (IOError,IndexError)  as e:#只要是常规错误都能打印
file.write(‘出现异常:{}’.format(e))#出现异常把异常信息写入到file文件中,e是异常取的别名
print(‘有这条信息说明进入到了异常信息里面’)

69c281755f5f45bc95c1760b1fc1b093.png

一个try里面也可以在切套一个try,就类似与if。。。 else。。。。

L=[1,2,3,4]#定义了一个列表
try:
file =open(‘test.txt’,’w’,encoding=’utf-8′)
try:
print(L[4])#取出列表中的索引为4的值,很明显列表中最大的索引是3,会抛出异常
except IndexError as e:  # 定义索引异常的错误,如果出现索引异常就会执行这里面的代码
file.write(‘索引异常:{}’.format(e))  # 如果出现索引异常就写入到file文件中
print(‘如果出现该内容说明已经出现了索引异常’)
res = file.read()#进行读操作,异常可能会出现在这里
except IOError as e:#只要是常规错误都能打印
file.write(‘\n出现异常:{}’.format(e))#出现异常把异常信息写入到file文件中,e是异常取的别名
print(‘有这条信息说明进入到了异常信息里面’)

571512a778a4429da7444a16e3681802.pnga62921d1ab1b42cabcff9cd3fbc60a3e.png

异常处理try…execpt…finally


finally不管执行try还是execpt ,最后的finally都会被执行,应用场景,在try和execpt定义同一个变量,不同的值,此时就可以finally统一进行对不同结果的处理

L=[1,2,3,4]#定义了一个列表
try:
file =open(‘test.txt’,’w’,encoding=’utf-8′)
try:
print(L[2])
except IndexError as e:  # 定义索引异常的错误,如果出现索引异常就会执行这里面的代码
file.write(‘索引异常:{}’.format(e))  # 如果出现索引异常就写入到file文件中
print(‘如果出现该内容说明已经出现了索引异常’)
finally:
print(‘没有出现异常,执行了try里面的代码,最后会执行到finally’)
res = file.read()#进行读操作,异常可能会出现在这里
except IOError as e:#只要是常规错误都能打印
file.write(‘\n出现异常:{}’.format(e))#出现异常把异常信息写入到file文件中,e是异常取的别名
print(‘有这条信息说明进入到了异常信息里面’)
finally:
print(‘读操作不执行,会抛出异常,所有会走execpt ioerror里面,但是最后finally也会被执行’)

fb60e1d4e9ff4cf89d39394f4845e9ec.png

异常处理try…execpt…else


异常处理try…execpt…else是就是只要try不报错的情况下才会执行else里面的文件,如果能进入到execpt中那else中的代码就不会被执行

L=[1,2,3,4]#定义了一个列表
try:
file =open(‘test.txt’,’w’,encoding=’utf-8′)
try:
print(L[2])
except IndexError as e:  # 定义索引异常的错误,如果出现索引异常就会执行这里面的代码
file.write(‘索引异常:{}’.format(e))  # 如果出现索引异常就写入到file文件中
print(‘如果出现该内容说明已经出现了索引异常’)
else:
print(‘没有出现异常,执行了try里面的代码,最后会执行到else里面’)
res = file.read()#进行读操作,异常可能会出现在这里
except IOError as e:#只要是常规错误都能打印
file.write(‘\n出现异常:{}’.format(e))#出现异常把异常信息写入到file文件中,e是异常取的别名
print(‘有这条信息说明进入到了异常信息里面’)
else:
print(‘读操作不执行,会抛出异常,所有会走execpt ioerror里面,所以就不会执行else’)66c2cac1bff14ce78a2b26dbb1ab55ba.png0c28b81e2df8455cbe3db91a9dfa4937.png

with….as….上下文管理器


with open(‘test.txt’,’w’,encoding=’utf-8′ ) as file:

​file.write(‘吾爱乐享’)

使用with  as  自动关闭open打开的文件,只要在with里面的子代码打开文件都会自动关闭

赞(0) 打赏
未经允许不得转载:吾爱乐享 » python学习之异常处理的几种方式,附案例

评论 抢沙发

评论前必须登录!

 

推荐免费资源共享,个人经验总结学习

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏