目录
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 / 0
print("func01结束")
def func02():
print("func02")
func01()
print("func02结束")
def func03():
print("func03")
try:
func02()
except Exception as e:
print(e)
print("func03结束")
func03()