一、异常的概念
错误:在程序的编译期就出现的
异常:在程序的运行期,是因为程序没有按照正常或者期望方式执行
【异常产生的时候,程序处理的处理方式】:
在异常放生的位置,程序会创建异常类型的对象,“暂停”程序,从上下文中想寻找有没有异常处理
的程序,如果有异常处理,那么会进入到异常处理程序(try except)。
如果没有异常处理,那么异常会向上传播
【异常的向上传播】:
如果异常是在函数中产生,会传播给函数的调用者
如果异常是在模块的顶级位置产生,会传播给引用这个模块的模块
如下所示:
def a():
return 1/0
def b():
a()
def c():
b()
def d():
c()
输出的报警为:
File "E:/new.py", line 10, in <module>
d()
File "E:new.py", line 8, in d
c()
File "E:/new.py", line 6, in c
b()
File "E:/new.py", line 4, in b
a()
File "Enew.py", line 2, in a
return 1/0
ZeroDivisionError: division by zero
二、异常的常见类型
BaseException 所有异常类的父类 基类
Exception 是BaseException的子类 处理普遍异常的相关代码
print(issubclass(Exception,BaseException))
输出:
True
1、ZeroDivisionError:除数为0的异常
print(1/0)
输出:
ZeroDivisionError: division by zero
2、NameError:名字错误异常,到命名空间中搜索对应名字,找不到会报NameError
print(a)
输出:
NameError: name 'a' is not defined
3、TypeError:类型不匹配,引用数据类型不一致
print("a"+1)
输出:
TypeError: must be str, not int
4.AttributeError:属性异常
class A:
def __init__(self):
pass
print(A.a)
输出:
AttributeError: type object 'A' has no attribute 'a'
5、IndentationError: 缩进异常
def a():
print(