☆ 異常的傳遞
需求:
① 嘗試只讀方式打開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}')