前言
由于博主最近也被网课围攻,所以停更了一周,先给观众姥爷道个歉,莫急,大家的课程不会落下的,这周给大家开启狂更模式,首先简述一下这一周的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("你这个人到了参军年龄,但不强征你入伍")
这篇知识点比较冗杂,需要观众姥爷细细体会,异常是一块非常重要的知识,只要应用领域就是大家耳熟能详的爬虫,所以想学好爬虫的小伙伴,重视此处。