Python自定义一个异常类的方法


Posted in Python onJune 27, 2019

如何实现自定义一个异常

python内置了许多异常类,为编写代码划定红线,才使调试代码时能及时发现错误。那么我们编写一个模块也可以为使用此模块者划定红线,来约束使用者可用哪些数据,这就需要自定义异常类型。

首先需要了的是自定义类是的父类:

python说明文档中是这样说 exception Exception:

所有内置的非系统退出类异常都派生自此类。 所有用户自定义异常也应当派生自此类

那么就可以通过直接或间接的继承Exception就可以自定义一个异常类,当然也可以间接的继承python内置的异常类。

通常的做法是,先为自己的模块创建一个基类,然后再从此基类派生其他异常类,这样不但清晰明了,也方便管理:

例如:

class MyErorr(Exception):
  pass
class AaErorr(MyErorr):
  pass
class BbErorr(MyErorr):
  pass

Python自定义一个异常类的方法

其次要了解 raise 语句:意为抛出异常。

raise 语句允许在写代码的时候强制发生指定的异常。

写法是:raise 后跟要抛出的异常。这个异常必须是异常实例或者是一个异常类。

Python自定义一个异常类的方法

步骤:

自定义异常类

例如:写一个只接收整数的加法计算器,当输入的不是整数时引发异常。

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),返回异常类对象说明信息。

Python自定义一个异常类的方法

引发异常

定义一个计算函数,函数体按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

Python自定义一个异常类的方法

捕获异常

try语句的except子句来捕获异常,并返回描述信息。

except Exception as e: 
  print(e)

Python自定义一个异常类的方法

else子句

在输入正确的情况下,不会引发异常,执行else子句执行计算。

这是一个简单的自定义的异常类。当有其他用户使用时,如果输入错误就会引发异常。下面两个例子来检验一下。

Python自定义一个异常类的方法

用户调用:(错误数据)

sA=calculator(33.3,66)

print(sA)

---本计算器只接收整数!

---None

输入的时小数,所以引发异常。

Python自定义一个异常类的方法

用户调用:(正确数据)

sA=calculator(33,66)

print(sA)

---99

输入正确计算出结果

Python自定义一个异常类的方法

总结:以上就是关于Python自定义异常类的实操方法,感谢大家的阅读和对三水点靠木的支持。

Python 相关文章推荐
Python内置函数——__import__ 的使用方法
Nov 24 Python
python实现对任意大小图片均匀切割的示例
Dec 05 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
Jan 03 Python
python3 实现口罩抽签的功能
Mar 11 Python
Jupyter notebook如何实现指定浏览器打开
May 13 Python
matplotlib教程——强大的python作图工具库
Oct 15 Python
python爬虫中url管理器去重操作实例
Nov 30 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 14 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 Python
opencv实现图像平移效果
Mar 24 Python
Python 中random 库的详细使用
Jun 03 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 01 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 #Python
python pytest进阶之conftest.py详解
Jun 27 #Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
Jun 27 #Python
python pytest进阶之fixture详解
Jun 27 #Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 #Python
python中pytest收集用例规则与运行指定用例详解
Jun 27 #Python
python取余运算符知识点详解
Jun 27 #Python
You might like
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
jQuery实现带动画效果的多级下拉菜单代码
2015/09/08 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
Python编写简单的HTML页面合并脚本
2016/07/11 Python
python 实现红包随机生成算法的简单实例
2017/01/04 Python
flask中的wtforms使用方法
2018/07/21 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
使用python实现滑动验证码功能
2019/08/05 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
python numpy数组中的复制知识解析
2020/02/03 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
Python3爬虫关于代理池的维护详解
2020/07/30 Python
国际领先的学术出版商:Springer
2017/01/11 全球购物
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
《花木兰》教学反思
2014/04/09 职场文书
公司离职证明范本
2014/10/17 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书
PyMongo 查询数据的实现
2021/06/28 Python
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技
Ruby处理YAML和json数据
2022/04/18 Ruby