捕获异常
概述:
捕获异常这种方式处理完异常之后, 程序会 自动往下 继续执行.
(基本)格式:
try:
可能出问题的代码
except:
出问题后的解决方案
执行流程:
1. 先执行 try中的内容, 看有无问题. 有问题会立即跳转到 except中执行.
2. 如果try中内容无问题, 程序会跳过 except, 继续向下执行.
try:
print("try 1")
# 1. 读取了1个不存在的文件.
src_f = open('1.txt', 'r') # FileNotFoundError
print("try 2")
except:
print('文件不存在, 请校验后重新操作!')
捕获异常, 完整格式如下:
try:
里边写的是可能出问题的代码
except [Exception as e]:
出现问题后的 解决方案
else:
只要try中内容无问题, 就会执行这里的内容.
只要try中有问题, 就会跳过这里的代码.
finally:
无论try是否有问题, 都会走这里的内容, 一般用于释放资源.
try:
print('try 1')
print(10 // 2)
print('try 2')
except Exception as e:
print(f'程序出问题了, {e}')
else:
print('我是else, 看看我执行了吗?')
finally:
print('我是finally, 看看我执行了吗?')
案例: 拷贝文件, 加入异常处理
try:
src_f = open('1.txt', 'rb')
dest_f = open('aa/bb/cc/2.txt', 'wb')
except Exception as e:
print(e)
else:
while True:
data = src_f.read(1024)
if len(data) <= 0:
break
dest_f.write(data)
finally:
try:
src_f.close()
except Exception as e:
print(e)
try:
dest_f.close()
except Exception as e:
print(e)
print('-' * 28)
try:
with open('1.txt', 'rb') as src_f, open('aa/bb/cc/2.txt', 'wb') as dest_f:
while True:
data = src_f.read(1024)
if len(data) <= 0:
break
dest_f.write(data)
except Exception as e:
print(e)