目录
1. 捕获异常(try: except: else: finally:)
1.1 概念
1.2 基础语法(try: except:)
1.3 捕获异常(异常也有类型)
1.4 捕获多个异常(try:except(NameError,ZeroDivisionError))
1.5 异常else(没有异常执行的代码块)
1.6 异常finally(出现异常也会执行)
2. 异常的传递性
1. 捕获异常(try: except: else: finally:)
1.1 概念
- 整个程序因为一个BGU停止运行;
- 对BUG进行提醒,整个程序继续运行;
1.2 基础语法(try: except:)
(后面不加异常类型就代表捕获全部异常)
try:f = open('xxx', 'r')
except:print("文件打开错误")
1.3 捕获异常(异常也有类型)
- 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常;
- 一般try下方只放一行尝试执行的代码;
num = (1, 2)
try:print(num[3]) # 元组下标异常
except IndexError as e:print(e)
1.4 捕获多个异常(try:except(NameError,ZeroDivisionError))
try:print(1 / 0)
except (NameError, ZeroDivisionError):print("ZeroDivisionError错误...")
1.5 异常else(没有异常执行的代码块)
try:print(1)
except Exception as e:print(e)
else:print("无异常执行")
1.6 异常finally(出现异常也会执行)
f = None
try:f = open('xxx', 'r')
except Exception as e:print(e)
else:print("无异常执行")
finally:print("有异常也执行!")f.close()
2. 异常的传递性
(调用函数的时候,如果出现了异常,可以在最终调用的函数中处理异常)
注意:当所有函数都没有捕获异常的适合,程序会报错;
def func01():print("func01")num = 1 / 0print("func01结束")def func02():print("func02")func01()print("func02结束")def func03():print("func03")try:func02()except Exception as e:print(e)print("func03结束")func03()