python 异常的总结概括

目录

1 .异常简介

2 .捕获异常

3 .异常的类型

4 .else 和 finally

5 .异常的传递

6 .自定义异常


内容 :

一 异常简介

当Python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常"

二 捕获异常

捕获异常 try…except…
把可能出现问题的代码,放在try中
把处理异常的代码,放在except中

try:
    open('123.txt','r')
except IOError:
    pass

打开一个123.txt的文件 ,正常情况下如果没有这个文件程序就会报错 , 用try包住可能出错的代码 , 如果这些代码真的出错了,那就会执行except里面的代码去解决,而不是直借停止程序


三 异常的类型

直借打印变量a,尝试捕获异常并处理

try:
    print(a)

except IOError:
    pass

代码运行结果:

NameError: name 'a' is not defined

我们明明已经捕获异常了,怎么还是会报错 ?
因为 except捕获的错误类型是IOError,而此时程序产生的异常为 NameError ,所以except没有生效

只要把IOError改成except就好了

注意捕获多个异常:

当捕获多个异常时,可以把要捕获的异常的名字,放到except 后,并使用元组的方式仅进行存储

except (IOError,NameError): 
注意捕获全部异常:

使用Exception就可以捕获全波类型的异常

except Exception:

四 else 和 finally

else:

对else并不陌生,在if中,它的作用是当条件不满足时执行的实行;
同样在try…except…中也是如此,即如果没有捕获到异常,那么就执行else
如果没有捕获到异常,并且也没有else,那么程序该怎么执行还是怎么执行

finally:

在程序中,如果一个段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用finally


五 异常的传递

  • 异常好比一个返回值, 是可以传递的
  • 如果try嵌套,那么如果里面的try没有捕获到这个异常,那么外面的try会接收到这个异常,然后进行处理,如果外边的try依然没有捕获到,那么再进行传递。。。
  • 如果是函数嵌套 ,也是一样的,A调用B,那程序流程是:A执行然后调用B,等B执行完在执行A剩下的代码.此时B函数中如果有异常了,那B会立刻停止,带着这个异常"回到"A函数里,计划着执行A剩下的代码,当这个异常出现的第一时间,就会被A的try捕获到

六 自定义异常

raise :
可以用raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类

就是程序正常的时候 , 我也可以用raise抛出一个异常 ,让try去捕获

try :
	print(666)
	raise Exception
except Exception:
	print('遇到错误')
自己创建异常类

只要继承Exception(异常基类)就可以定义自己的异常类型, 然后可以去对应抛出和捕获
比如 我创建一个类名为 : MyError(Exception) ,要继承 这个类,否则就不是异常了
抛出异常 raise MyError
那我except的时候 可以写成 except MyError:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值