前言
由於博主最近也被網課圍攻,所以停更了一週,先給觀衆姥爺道個歉,莫急,大家的課程不會落下的,這周給大家開啓狂更模式,首先簡述一下這一週的Python學習,如果小夥伴沒有吃透上一篇基礎學習請戳這裏Python異常處理去補習一下,因爲這一週Python學習整體是按照上一篇博客講述的,所以如果有觀衆姥爺不是很理解請戳上一篇博客:Python異常處理,廢話不多說,進入正題。
Python中多變的異常(補充篇)
我們引用歷史:明朝的文字獄對異常進行講解
# -*- coding: utf-8 -*-
# @Time : 2020/3/10 21:48
# @Author : HaoXuan
# @File : 08_自定義異常.py
#清朝前期,風雲突起
#明朝規定 名字中帶:明的,都屬於反清復明
#name = '浩軒'
def check_name(name):
if name.find("明") >= 0: #索引大於0,就意味着有明字
print('這個人暗示反清復明,砍了')
else:
print("這個人是個大清良民")
check_name("阿明")
引用實例
'''
# -*- coding: utf-8 -*-
# @Time : 2020/3/10 21:48
# @Author : HaoXuan
實例:
明末法律規定:年齡如果到達20歲,那麼你要去當兵
有一天,皇帝開明瞭。你的名字可以帶明,不把你當作反清復明分子
參軍的人數夠了,不再強制徵兵
'''
def check_name(name):
if name.find('明') >= 0:
raise NameError('這個人名字裏有明')
else: #可寫可不寫
print("名字裏沒有明")
def check_age(age):
if age >=20:
raise ValueError('這個人年齡到了20歲')
else:
print("名字裏沒有明")
主動拋出異常
# -*- coding: utf-8 -*-
# @Time : 2020/3/10 21:48
# @Author : HaoXuan
def check_name(name):
if name.find('明') >= 0:
raise NameError('這個人名字裏有明')
else: #可寫可不寫
print("名字裏沒有明")
def check_age(age):
if age >=20:
raise ValueError('這個人年齡到了20歲')
else:
print("名字裏沒有明")
check_age(20) #放在前面的函數調用,先執行拋出異常 → ValueError: 這個人年齡到了20歲
check_name("小明")
age=20
name = "小明"
try:
check_age(age)
check_name("小明")
except NameError: #具體應對方案
#print('這個人暗示反清復明,砍了')
print("你這個人名字有點問題,但不殺你")
except ValueError:#具體應對方案
print("你這個人到了參軍年齡,但不強徵你")
#不能去佔用原生的異常類,需要自定義異常類
#自定義異常的定義
# -*- coding: utf-8 -*-
# @Time : 2020/3/10 21:48
# @Author : HaoXuan
#exception是所有異常類的father 簡稱:父類、
#Class代表定義一個類
#類名使用大駝峯寫法,標識符
class NameIsError(Exception): #繼承了這個類就可以擁有這個類所有的東西
pass #佔位符,不起任何作用
class AgeIsError(Exception):
pass
def check_name(name):
if name.find('明'):
raise NameError('這個人名字裏有明')
def check_age(age):
if age >= 20:
raise AgeIsError('這個人的年紀超過了20歲')
age=20
name = "阿明"
try:
#check_age(age) #註釋掉age,直接拋出name的異常
check_name(name)
except NameIsError:
# print('這個人暗示反清復明,砍了')
print("你這個人名字有點問題,但不殺你")
except AgeIsError:
print("你這個人到了參軍年齡,但不強徵你入伍")
這篇知識點比較冗雜,需要觀衆姥爺細細體會,異常是一塊非常重要的知識,只要應用領域就是大家耳熟能詳的爬蟲,所以想學好爬蟲的小夥伴,重視此處。