捕获异常
基本语法:
try:
可能发生错误的代码
except:
如果出现异常执行的代码
# 尝试以r模式打开文件,如果文件不存在则以w方式打开
try:
f = open('linux.txt', 'r')
except:
f = open('linux.txt', 'r')
捕获指定异常
try:
print(name)
except NameError as e:
print("出现了变量未定义的异常") #NameError是具体的异常类型
print(e) #e就是异常信息
捕获多个异常
try:
print(name)
except (NameError,ZeroDivisionError) as e:
print("出现变量未定义 或者 除以 0 的异常")
捕获全部异常
方式1
try:
f = open('linux.txt', 'r')
except:
f = open('linux.txt', 'r')
方式2
try:
except Exception as e:
else:
print("没出现异常")
异常的finally
finally表示的是无论是否异常都要执行的代码,例如关闭文件
try:
f = open('linux.txt', 'r')
except Exception as e:
f = open('linux.txt', 'w')
else:
print("没有异常")
finally:
f.close() # 无论有没有异常 都要执行
异常的传递
异常是具有传递性的,当函数1中发生异常,并且没有捕获处理这个异常的时候,异常会传递到包含他的函数之内
当所有函数都没有捕获异常的时候,程序就会报错