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

 更新时间:2019年06月27日 11:04:07   作者:Ma_Qiao2020  
在本篇文章里小编给大家分享了关于Python自定义一个异常类的详细步骤和实例代码,有兴趣的朋友们参考学习下。

如何实现自定义一个异常

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 datetime模块的使用示例

    Python datetime模块的使用示例

    这篇文章主要介绍了Python datetime模块的使用示例,帮助大家更好的理解和使用python处理时间,感兴趣的朋友可以了解下
    2021-02-02
  • 基于python实现微信收红包自动化测试脚本(测试用例)

    基于python实现微信收红包自动化测试脚本(测试用例)

    这篇文章主要介绍了基于python实现微信收红包自动化测试脚本,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-07-07
  • python获取全国城市pm2.5、臭氧等空气质量过程解析

    python获取全国城市pm2.5、臭氧等空气质量过程解析

    这篇文章主要介绍了python获取全国城市pm2.5、臭氧等空气质量过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Python教程教你如何去除背景

    Python教程教你如何去除背景

    这篇文章主要介绍了Python教程教你如何去除背景,修饰图片中的头发是设计师最烦人的任务之一,下面文章将让大家学会怎么轻松抠图去背景,需要的小伙伴可以参考一下
    2022-02-02
  • python 实现的IP 存活扫描脚本

    python 实现的IP 存活扫描脚本

    这篇文章主要介绍了python 实现的IP 存活扫描脚本,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • python读取TXT每行,并存到LIST中的方法

    python读取TXT每行,并存到LIST中的方法

    今天小编就为大家分享一篇python读取TXT每行,并存到LIST中的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 基于Python+Pygame实现变异狗大战游戏

    基于Python+Pygame实现变异狗大战游戏

    只有你想不到,没有我找不到写不了的好游戏!这篇文章就来和大家分享一下如何基于Python+Pygame实现变异狗大战游戏,感兴趣的可以了解一下
    2023-03-03
  • driver = webdriver.Chrome()报错问题及解决

    driver = webdriver.Chrome()报错问题及解决

    这篇文章主要介绍了driver = webdriver.Chrome()报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Python使用树状图实现可视化聚类详解

    Python使用树状图实现可视化聚类详解

    一般情况下,我们都是使用散点图进行聚类可视化,但是某些的聚类算法可视化时散点图并不理想,所以在这篇文章中,我们介绍如何使用树状图(Dendrograms)对我们的聚类结果进行可视化
    2023-03-03
  • Python matplotlib数据可视化图绘制

    Python matplotlib数据可视化图绘制

    这篇文章主要介绍了Python matplotlib数据可视化图绘制,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07

最新评论