☆ 异常的传递
需求:
① 尝试只读方式打开python.txt文件,如果文件存在则读取文件内容,文件不存在则提示用户即可。
② 读取内容要求:尝试循环读取内容,读取过程中如果检测到用户意外终止程序,则except
捕获
import time
try:
f = open('python.txt', 'r')
try:
while True:
content = f.readline()
if len(content) == 0:
break
time.sleep(3)
print(content, end='')
except:
# Ctrl + C(终端里面,其代表终止程序的继续执行)
print('python.txt未全部读取完成,中断了...')
finally:
f.close()
except:
print('python.txt文件未找到...')
☆ raise抛出自定义异常
在Python中,抛出自定义异常的语法为raise 异常类对象
。
需求:密码长度不足,则报异常(用户输入密码,如果输入的长度不足6位,则报错,即抛出自定义异常,并捕获该异常)。
原生方法:
def input_password():
password = input('请输入您的密码,不少于6位:')
if len(password) < 6:
# 抛出异常
raise Exception('您的密码长度少于6位')
return
# 如果密码长度正常,则直接显示密码
print(password)
input_password()
面向对象抛出自定义异常:
class ShortInputError(Exception):
# length代表输入密码长度,min_length代表ShortInputError最小长度
def __init__(self, length, min_length):
self.length = length
self.min_length = min_length
# 定义一个__str__方法,用于输出字符串信息
def __str__(self):
return f'您输入的密码长度为{self.length},不能少于{self.min_length}个字符'
try:
password = input('请输入您的密码,不少于6位:')
if len(password) < 6:
raise ShortInputError(len(password), 6)
except Exception as e:
print(e)
else:
print(f'密码输入完成,您的密码是:{password}')