异常处理
错误和异常的区别
什么是错误
-
语法错误(大小写拼写错误、括号不匹配等...)=> 不能正常执行
-
逻辑错误(程序运行正常,只是最后结果不符合预期)
什么是异常
-
程序运行过程中,出现的意料之外的错误
-
如:打开的文件不存在、被除数为0、操作的数据类型不对、存储错误,互联网请求错误
回溯信息
-
当程序运行时,发生了未处理的异常,Python就将终止执行程序,并以堆栈回溯(Traceback,也称向后追踪)的形式显示异常发生的上下文。
-
回溯信息告诉我们应该去哪里寻找问题的根源,对解决问题非常有帮助。
常见异常类
#断言异常(常用于测试)
a = 4
b = 3
assert a<b
#会报断言异常,因为断言a<b但实际上不小于
父类异常和子类异常
Exception 是FileNotFoundError 的父类
异常处理
在代码被解释执行的过程中可能会抛出异常。
那么也就是说,可能会发生,可能不会发生。对于这么不可预测的异常状态如何处理?
1:即使程序出错,也不想让程序终止
2:如果出错了,需要特殊处理
异常处理机制 try...except...
try:
执行代码
except 异常类型 as 接收异常详情的变量: #捕获到了异常类型才执行
处理的内容
try:
print("打开文件aa")
fp = open("aa")
except:
print("文件未找到")
print("end....")
输出:
打开文件
文件未找到
ending....
即使return了,finally也会执行
手动触发异常(raise 异常名)
• raise 异常类(”错误说明信息“)
raise --默认就抛出RuntimeError
raise 异常类
简单的异常处理的格式
执行顺序:
-
正常执行: try -> 执行代码 -> 结束
-
遇到异常: try -> 遇到异常 -> 跳到excep -> 结束