一.捕获常规异常
try:
可能发生错误代码
except:
如果出现异常执行的代码
2.捕获指定异常
eg.
try:
print(name)
except NameError as e:
print("出现了变量未定义的异常")
print(e) # e:错误的原因
输出: 出现了变量未定义的异常
name 'name' is not defined
3.捕获多个异常
try:
1/0
print(name)
except(NameError,ZeroDivisionError) as e:
print("出现变量未定义或者除以0的异常")
输出: 出现变量未定义或者除以0的异常
4.捕获全部异常
try:
f=open("D:/123.txt","r")
except Exception as e:
print("出现异常了")
/except:
print("出现异常了")
输出: 出现异常了
5.异常的else和finally
(1)else:
try:
print(1)
except Exception as e:
print("我是else,是没有异常时执行的代码")
(2)finally:无论有没有出现异常都要执行的代码
二.异常的传递性
当函数 func01 中发生异常,并且没有捕获处理这个异常的时候,异常会传递到函数 func02,当 func02 也没有捕获处理这个异常的时候,main 函数会捕获这个异常,这就是异常的传递性。
提示: 当所有函数都没有捕获异常的时候,程序就会报错
def func01(): # 异常在func01中没有被捕获
print("这是func01开始")
num = 1 / 0
print("这是func01结束")
def func02(): # 异常在func02中没有被捕获
print("这是func02开始")
func01()
print("这是func02结束")
def main(): # 异常在main中被捕获
try:
func02()
except Exception as e:
print(e)
main()
输出:
这是func02开始
这是func01开始
division by zero