致一路走來的Python愛好者——Python學習之路⑤

前言

由於博主最近也被網課圍攻,所以停更了一週,先給觀衆姥爺道個歉,莫急,大家的課程不會落下的,這周給大家開啓狂更模式,首先簡述一下這一週的Python學習,如果小夥伴沒有吃透上一篇基礎學習請戳這裏Python異常處理去補習一下,因爲這一週Python學習整體是按照上一篇博客講述的,所以如果有觀衆姥爺不是很理解請戳上一篇博客:Python異常處理,廢話不多說,進入正題。
HaoXuan

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("你這個人到了參軍年齡,但不強徵你入伍")

這篇知識點比較冗雜,需要觀衆姥爺細細體會,異常是一塊非常重要的知識,只要應用領域就是大家耳熟能詳的爬蟲,所以想學好爬蟲的小夥伴,重視此處。
HaoXuan

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章