当前位置: 首页 > 科技观察

一篇文章带你弄懂Python异常简介和案例分析

时间:2023-03-15 10:00:14 科技观察

一篇文章带你了解Python异常的介绍和案例分析当遇到错误时,解释器不能继续执行,反而会出现一些错误提示,这就是所谓的“异常”。2、案例分析打开一个不存在的文件123.txt。当找不到123.txt文件时,会抛给我们一个IOError类型的错误,Nosuchfileordirectory:123.txt(没有123.txt这样的文件或目录)。print'-----test--1---'open('123.txt','r')print'-----test--2---'运行结果:<1>捕获异常try...except...例如:try:print('-----test--1---')open('123.txt','r')print('-----test--2---')exceptIOError:pass运行结果:解释:本程序没有看到任何错误,因为用except捕获了IOError异常,增加了处理方法。pass表示对应的实现被实现了,但是什么都不做;如果pass改为print语句,则输出其他信息。小总结:把可能有问题的代码放在try里。将异常处理代码放在except中。<2>Except捕获多个异常例子:try:print(num)exceptIOError:print('Anerroroccurred')运行结果:想一想:上面的例子程序已经用except捕获异常了,为什么还是看到Wrong消息提示?答:except捕获的错误类型是IOError,此时程序产生的异常是NameError,所以except不生效。修改后的代码为:try:print(num)exceptNameError:print('发生错误')在实际开发运行结果中,捕获多个异常的方式如下:#coding=utf-8try:print('-----test--1---')open('123.txt','r')#如果123.txt文件不存在,会产生IOError异常print('-----test--2---')print(num)#如果没有定义num变量,会产生NameError异常except(IOError,NameError):#如果想通过一个异常捕获多个异常,可以使用元组。注意:当捕获多个异常时,可以将要捕获的异常的名称放在except之后,存储在一个元组中。<3>获取异常信息描述try:open("a.txt")except(NameError,IOError)asresult:print("Catchexception")print("Informationdisplay:",result)运行结果:<4>Catchallexceptionstry:open("a.txt")exceptExceptionasresult:print("Catchexception")print("信息显示:",result)运行结果:<5>else我们应该很熟悉了,在if中,它的作用是不满足条件时执行;try...except...也是一样,即如果没有捕获到异常,则执行else中的事情。try:num=100print(num)exceptNameErrorraserrorMsg:print('发生错误:%s'%errorMsg)else:print('没有捕获到异常,太开心了')运行结果如下:<6>try..。最后。..try...finally...语句用来表达这样一种情况:在程序中,如果一段代码必须执行,即无论是否发生异常都必须执行,那么finally需要在这个时候使用。比如关闭文件,释放锁,将数据库连接归还给连接池。demo:importtimetry:f=open('test.txt')try:whileTrue:content=f.readline()iflen(content)==0:breaktime.sleep(2)print(content)except:#如果读取在文件的处理,如果出现异常,那么就会被捕获#比如按ctrl+cpassfinally:f.close()print('关闭文件')except:print("没有那个文件")运行结果:说明:test.txt文件中的每一行数据都打印出来了,但是我特意用time.sleep方法在每行打印前暂停了2秒。这样做的原因是为了让程序运行得更慢。程序运行时,按Ctrl+c可中断(取消)程序。我们可以观察到KeyboardInterrupt异常被触发,程序退出。但是在程序退出之前,finally子句仍然被执行,关闭了文件。3.小结本文讲解了Python的异常基本知识,介绍了常见的异常操作,并用丰富的案例帮助大家更好的理解异常的常见基本操作。