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 相关文章推荐
Python3.x版本中新的字符串格式化方法
Apr 24 Python
教大家使用Python SqlAlchemy
Feb 12 Python
Python实现的特征提取操作示例
Dec 03 Python
利用arcgis的python读取要素的X,Y方法
Dec 22 Python
python如何获取列表中每个元素的下标位置
Jul 01 Python
python实现从wind导入数据
Dec 03 Python
python如何实现单链表的反转
Feb 10 Python
python 实现多维数组(array)排序
Feb 28 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
Mar 09 Python
Python Tkinter图形工具使用方法及实例解析
Jun 15 Python
Python批量获取并保存手机号归属地和运营商的示例
Oct 09 Python
Python自动化爬取天眼查数据的实现
Jun 15 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
实用函数9
2007/11/08 PHP
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
javascript读取xml实现javascript分页
2013/12/13 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
2014/12/18 NodeJs
javascript图片切换综合实例(循环切换、顺序切换)
2016/01/13 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
小程序实现选择题选择效果
2018/11/04 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
python实现简单温度转换的方法
2015/03/13 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
Python 模拟购物车的实例讲解
2017/09/11 Python
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
Numpy 改变数组维度的几种方法小结
2018/08/02 Python
python如何生成各种随机分布图
2018/08/27 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
python实现简易学生信息管理系统
2020/04/05 Python
numpy实现神经网络反向传播算法的步骤
2019/12/24 Python
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
简历中个人求职的自我评价模板
2013/11/29 职场文书
自动化专业个人求职信范文
2013/11/29 职场文书
软件项目开发计划书
2014/05/01 职场文书
公证委托书
2014/08/01 职场文书
2014年司法局工作总结
2014/12/11 职场文书
教代会开幕词
2015/01/28 职场文书
python实战之90行代码写个猜数字游戏
2021/04/22 Python
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记
Selenium浏览器自动化如何上传文件
2022/04/06 Python
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android