如何实现自定义一个异常
python内置了许多异常类,为编写代码划定红线,才使调试代码时能及时发现错误。那么我们编写一个模块也可以为使用此模块者划定红线,来约束使用者可用哪些数据,这就需要自定义异常类型。
首先需要了的是自定义类是的父类:
python说明文档中是这样说 exception Exception:
所有内置的非系统退出类异常都派生自此类。 所有用户自定义异常也应当派生自此类。
那么就可以通过直接或间接的继承Exception就可以自定义一个异常类,当然也可以间接的继承python内置的异常类。
通常的做法是,先为自己的模块创建一个基类,然后再从此基类派生其他异常类,这样不但清晰明了,也方便管理:
例如:
class MyErorr(Exception): pass class AaErorr(MyErorr): pass class BbErorr(MyErorr): pass
其次要了解 raise 语句:意为抛出异常。
raise 语句允许在写代码的时候强制发生指定的异常。
写法是:raise 后跟要抛出的异常。这个异常必须是异常实例或者是一个异常类。
步骤:
自定义异常类:
例如:写一个只接收整数的加法计算器,当输入的不是整数时引发异常。
class CalcErorr(Exception) pass class NumErorr(CalcErorr) def __init__(self,numA,numB) self.numA=numA self.numB=numB def __str__(self) return f"本计算器只接收整数!"
两个魔法方法:
- def __init__(self),异常类对象的初始化属性。
- def __str__(self),返回异常类对象说明信息。
引发异常:
定义一个计算函数,函数体按try语句规则,在try子句内引发异常。
def calculator(a,b) try: if type(a)!=int or type(b)!=int: raise NumErorr(a,b) except Exception as e: print(e) else: c=a+b return c
捕获异常:
try语句的except子句来捕获异常,并返回描述信息。
except Exception as e: print(e)
else子句:
在输入正确的情况下,不会引发异常,执行else子句执行计算。
这是一个简单的自定义的异常类。当有其他用户使用时,如果输入错误就会引发异常。下面两个例子来检验一下。
用户调用:(错误数据)
sA=calculator(33.3,66)
print(sA)
---本计算器只接收整数!
---None
输入的时小数,所以引发异常。
用户调用:(正确数据)
sA=calculator(33,66)
print(sA)
---99
输入正确计算出结果
总结:以上就是关于Python自定义异常类的实操方法,感谢大家的阅读和对的支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]