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

作者:Ma_Qiao2020 时间:2022-04-23 12:51:11 

如何实现自定义一个异常

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,异常类
0
投稿

猜你喜欢

  • 通过T-SQL语句实现数据库备份与还原的代码

    2011-12-01 08:02:15
  • Python基于Google Bard实现交互式聊天机器人

    2022-12-14 22:05:20
  • Python实现为PDF去除水印的示例代码

    2023-03-05 04:27:56
  • golang基于websocket实现的简易聊天室程序

    2023-06-15 00:27:01
  • 一个asp版XMLDOM操作类

    2011-04-19 10:50:00
  • python pycurl验证basic和digest认证的方法

    2022-12-17 23:01:15
  • 利用python为运维人员写一个监控脚本

    2021-01-19 16:12:37
  • MySQL Basis 常用命令

    2010-11-11 11:59:00
  • 用 JS 来控制 target 链接属性

    2007-10-08 12:59:00
  • Django 使用easy_thumbnails压缩上传的图片方法

    2023-11-10 07:47:38
  • CVE-2020-15148漏洞分析

    2023-06-13 13:41:18
  • PHP使用自定义key实现对数据加密解密的方法

    2023-08-21 12:48:37
  • js+ajax实现获取文件大小的方法

    2023-08-12 00:22:07
  • 在python中利用pycharm自定义代码块教程(三步搞定)

    2022-11-20 01:00:50
  • python 执行函数的九种方法

    2021-03-10 18:12:08
  • 如何在Python中创建二叉树

    2022-07-30 06:27:35
  • Oracle 外连接实现代码

    2009-08-08 23:08:00
  • pytorch 计算ConvTranspose1d输出特征大小方式

    2021-08-14 10:16:16
  • 举例讲解Python中的算数运算符的用法

    2022-03-30 22:14:49
  • 框架iframe子页面,自适应高度方法

    2008-06-07 13:31:00
  • asp之家 网络编程 m.aspxhome.com