如何实现自定义一个异常

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自定义异常类的实操方法,感谢大家的阅读和对脚本之家的支持。

python中exception类的_Python自定义一个异常类的方法相关推荐

  1. Python自定义一个异常类【注释详细】

    异常: 下面定义了一个CandleShop类: class CandleShop:name = "Here's a Hot Tip: Buy Drip Candles"def __ ...

  2. 如何自定义一个异常类

    如何自定义一个异常类 参考文章: (1)如何自定义一个异常类 (2)https://www.cnblogs.com/d1349077083/p/4273188.html (3)https://www. ...

  3. python中常见的漏洞_Python常见安全漏洞及修复方法集合!你所不会的这里都有!...

    [51CTO技术沙龙]10月27日,让我们共同探索AI场景化应用实现之道 --> 概述 编写安全的代码很困难,当你学习一门编程语言.一个模块或框架时,你会学习其使用方法.在考虑安全性时,你需要考 ...

  4. python中str是什么_python的str()字符串类型的方法详解

    字符串一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串,因为内存存数据是一个挨着一个存的,如果增加一个字符串的话,之前的老位置只有一个地方,不够,这是原理性的东西,在其他语言里面也一样 7 ...

  5. python所有异常类的顶级基类是_Python内建异常类的基类是Exception

    [单选题]You should be more careful ______ you take a test. [单选题]肉在干制过程中的物理变化主要有干缩.干裂.表面硬化.重量减轻.体积缩小和( ) ...

  6. python中约瑟夫环程序_Python实现约瑟夫环问题的方法

    本文实例讲述了Python实现约瑟夫环问题的方法.分享给大家供大家参考,具体如下: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的 ...

  7. python中ioerror怎么解决_Python IOError错误异常原因|python基础教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ python语言IOError错误一般多发生在对文件操作报错时,表示要打开的文件不存在,当然能引发IOEr ...

  8. python中readlines怎么用_python read() readline() readlines() write() writelines()方法总结

    open()成功执行后返回一个文件对象,以后所有对该文件的操作都可以通过这个"句柄"来进行,现在主要讨论下常用的输入以及输出操作. 输出: read()方法用于直接读取字节到字符串 ...

  9. python 多线程 类_Python中如何自定义一个多线程类呢?

    摘要: 下文讲述Python中自定义一个多线程类的方法分享,如下所示: 实现思路: 1.定义一个类继承threading.Thread 2.在自定义类中构造函数重写run方法 例: Python3中自 ...

最新文章

  1. 新兴解决方案增强了电动汽车电源(功耗)管理
  2. Chrome 打印PDF技巧
  3. FPGA 控制 FLASH 之 Startup 原语使用相关链接
  4. 图解C++虚函数 虚函数表
  5. 随机数生成器c语言,句子随机生成器-怎么用C语言生成随机数
  6. ​“国产”AI框架争相开源,“领头羊”百度飞桨将扔重磅炸弹?
  7. linux下 Tomcat 端口号修改
  8. Javascript:ES6模块化开发报错:Uncaught SyntaxError: Cannot use import statement outside a module
  9. python编写递归函数和非递归函数、输出斐波那契数列_C语言编程:用递归和非递归法输出斐波那契数列...
  10. 高德地图输入地址获取经纬度_不打开地图也能获取地址-利用百度地图API和Python实现...
  11. 《统计学》(贾俊平)考研初试完整学习笔记1~5章
  12. BZOJ_P3110 [ZJOI2013]K大数查询(线段树+整体二分)
  13. 2019 年第 33 周 DApp 影响力排行榜 | TokenInsight
  14. 求n个整数的平均值与中位数
  15. 《算法0基础100讲》(第7讲)素数判定——866.回文素数
  16. Apache DolphinScheduler 社区呼唤志愿者
  17. 深度学习经典论文汇总
  18. Android的RemoteViews
  19. PAT Basic(乙级)---1009 (20 分)说反话
  20. taro标签_Taro自定义标签栏TabBar

热门文章

  1. 推荐程序员的求爱技巧
  2. Python有多火,来看一份24小时榜单,从入门到进阶,赶紧收藏!
  3. 这不关我的事,别烦我!
  4. HTML5 API详解(18):IndexedDB 本地存储
  5. 机器学习笔记十一之降维
  6. 实用遗传咨询 | 精神与行为异常-Autism
  7. 1.10 编程基础之简单排序 04 奖学金 7分 python
  8. 第67课 选择排序 例67.1 《小学生C++编程入门》
  9. Mysql报错:2006 - MySQL server has gone away
  10. java hashmap 常用方法_Java的HashMap中的常用方法总结