致一路走来的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

发布了13 篇原创文章 · 获赞 25 · 访问量 2970

猜你喜欢

转载自blog.csdn.net/kangqiao0422/article/details/104857899