异常:就是指程序执行时出现的错误
try:后面的代码是可能会出现的异常语句
except:出现异常后执行的语句
else:没有出现异常执行的语句
finally:无论是否有异常都会执行的语句
try: 代码 except: 代码 else: 代码 finally: 代码 |
书写格式
try:
print(a > 1)
except:
print('有错误')
else:
print('无错误')
finally: # 无论怎样都会执行下面的代码
print('执行')
异常的类型:有TypeError,NameError等等,Exception是所有异常的父类
捕获异常的方式:
1)可以是指定异常进行捕获,如果没有该异常,则不会执行except的语句
2)多个指定异常类型捕获
3)使用所有异常的父类 Exception ,只要出现异常都能捕获
as 赋予异常信息,可直接使用变量输出异常信息
try:
print(a > 1)
except TypeError as result: # 单个异常捕获
print(result)
try:
print(a > 1)
except (TypeError, NameError) as result: # 多个异常捕获
print(result)
try:
print(a > 1)
except Exception as result: # 使用Exception父类异常捕获异常
print(result)
异常可嵌套使用:传递时由外层传到内层
# 异常传递 外层异常传递到内层
import time
try:
f = open('1.txt', 'r')
try:
while True:
con = f.readline()
if len(con) == 0:
break
print(con)
time.sleep(2)
except:
print('程序意外终止')
except:
print('程序执行出错')
自定义异常
使用语法为 raise + 异常对象
代码实现
# 实现代码
# 自定义异常类
class ShortTypeError(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:
con = input('请输入密码:')
if len(con) < 5:
# 抛出异常类的对象
raise ShortTypeError(len(con), 5) # 定义了一个异常类对象
except Exception as result:
print(result)
else:
print('密码输入完成')
main()