异常处理
- 什么是异常
- 程序在运行过程中,不可避免出现一些错误这些错误我们称之为异常。
- 出现异常以后的代码都不会执行
- 异常处理的语句
-
try语句
try: 代码块(可能出现错误的语句) except 异常类型 as 异常名: 代码块(出现错误的处理方式) except 异常类型 as 异常名: 代码块(出现错误的处理方式) except 异常类型 as 异常名: 代码块(出现错误的处理方式) ...... else: 代码块(没有出现错误的语句) finally: 代码块(是否有异常该代码块都会执行)
-
例如
try: print(python) except: print('出错了!!!') else: print('程序正常运行')
-
如果在except后面不加任何内容,此时它会捕获所以的异常
-
如果在except后面加上异常类型,那么它只会捕获该类型的异常
- 仅捕获NameError
try: print(a) except NameError: print('出现NameError的错误')
- 捕获任意异常
try: print(666/0) except Exception as e: print('出现异常了',e,type(e)) finally: print('无论是否出现异常,我都会执行...')
- 仅捕获NameError
-
- 异常的传播
- 当在函数中出现了异常,如果你对异常进行处理,则异常不在继续传播
- 如果你在函数中没有处理,则异常会继续向函数调用处传播
- 直到传播到全局作用域,如果依旧没有处理,则出现终止,并且显示异常信息
- 当这个程序在运行过程中出现异常,所以异常信息会被保存到一个专门的异常对象中
- 而异常传播时,实际上就是异常对象抛给了调用处
def fn1(): print('我是fn1') print(100/0) def fn2(): print('我是fn2') fn1() def fn3(): print('我是fn3') fn2() fn3()