当检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的异常
例如:
open("test.txt", 'r') # 如果没有test.txt文件就报错了
- 语法:
"""
try:
可能错误的代码
except:
如果上面发生异常就执行该段代码
"""
try:
open('test.txt', 'r')
except:
open('test.txt', 'w')
- 捕获异常类型&多个异常类型&异常描述信息&所有异常&异常的else&异常的finally
捕获异常类型
"""
try:
可能错误的代码
except 异常类型:
如果上面发生异常就执行该段代码
"""
多个异常类型
"""
try:
可能错误的代码
except (异常类型1,异常类型2):
如果上面发生异常就执行该段代码
"""
异常描述信息
"""
try:
可能错误的代码
except (异常类型1,异常类型2) as result:
print(result)
"""
所有异常
"""
try:
可能错误的代码
except Exception as result:
print(result)
"""
异常的else
"""
try:
可能错误的代码
except Exception as result:
print(result)
else:
print('程序没有异常要执行的代码')
"""
异常的finally
"""
try:
可能错误的代码
except Exception as result:
print(result)
else:# 不要else也行
print('程序没有异常要执行的代码')
finally:
无论如何都要执行的代码
"""
# NameError
print(num)
- 异常传递
import time
try:
f = open('test.txt')
try:
while True:
conrent = f.readline()
if len(conrent) == 0:
break
time.sleep(2)
print(conrent)
except:
print('意外终止了读取数据')
finally:
f.close()
print('关闭文件')
except:
print('没有这个文件')
- 自定义异常:报错,报的是不满足要求的错误
# 自定义异常类
class ShortInputError(Exception):
def __init__(self, length, min_len):
self.length = length
self.min_len = min_len
def __str__(self):
return f'您输入了{self.length}位密码,最低要求是{self.min_len}位'
def main():
try:
com = input('请输入您的密码:')
if len(com) < 3:
raise ShortInputError(len(com), 3)
except Exception as result:
print(result)
else:
print('密码输入完成')
main()



