python如何使用raise抛出自定义异常

 更新时间:2023年08月12日 09:19:25   作者:一二三四!  
这篇文章主要介绍了python如何使用raise抛出自定义异常问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

python使用raise抛出自定义异常

1.显然下面这段代码中'索引越界了...'是这样被传递的

接下来让我们看一下具体的实现

练习1:判断输入字符串的长度,如果小于指定的长度就报错

class ShortInputException(Exception):
    def __init__(self, length, least_length):
        super().__init__()
        self.length = length
        self.least_length = least_length
    def __str__(self):
        return '您输入的长度为:{},最短长度为:{}'.format(self.length, self.least_length)
try:
    content = input('请输入内容:')
    if len(content) < 5:
        raise ShortInputException(len(content), 5)
    else:
        print('符合要求')
except ShortInputException as e:
    print(e)
'''
请输入内容:ASD
您输入的长度为:3,最短长度为:5
'''

注意: 

以上程序中,关于代码# Exception.__init__(self)的说明

这一行代码,可以调用也可以不调用,建议调用,因为__init__方法往往是用来对创建完的对象进行初始化工作,如果在子类中重写了父类的__init__方法,即意味着父类中的很多初始化工作没有做,这样就不保证程序的稳定了,所以在以后的开发中,如果重写了父类的__init__方法,最好是先调用父类的这个方法,然后再添加自己的功能。

python主动抛出异常、自定义异常

1. 抛出异常

1.1 raise

raise 指定要抛出的异常。

对应参数必须是异常的实例或是异常的类(Exception)

例:

def fun(x):  
    if x > 5:  
        raise Exception(f"x 不能大于 5,x={x}")
"""
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in fun
Exception: x 不能大于 5,x=7
"""

1.2 assert

assert condition
# condition 为真,不做任何事情
# condition 为假,抛出AssertionError异常
# 等价于:
if not condition:  
    raise AssertionError()
# ****************************************
assert condition, "错误原因"
==> 
if not condition:
    raise AssertionError("错误原因")

2. 自定义异常

自定义类异常必须继承 Exception

自定义异常:

class MySQLError(Exception):
    def __init__(self, error_info):
        super(MySQLError, self).__init__(error_info)
        self.error_info = error_info
    def __str__(self):
        return self.error_inf

使用自定义异常:

try:
    raise MySQLError('异常')
except MySQLError as e:
    print(e)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 删除pycharm鼠标右键快捷键打开项目的操作

    删除pycharm鼠标右键快捷键打开项目的操作

    这篇文章主要介绍了删除pycharm鼠标右键快捷键打开项目的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Python:一行代码,导入Python所有库

    Python:一行代码,导入Python所有库

    在本篇内容里小编给大家分享如何用一行代码,导入Python所有库,有需要的朋友们可以学习下,希望能够给你带来帮助
    2021-10-10
  • python 实现多维数组(array)排序

    python 实现多维数组(array)排序

    今天小编就为大家分享一篇python 实现多维数组(array)排序,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python 字典套字典或列表的示例

    python 字典套字典或列表的示例

    今天小编就为大家分享一篇python 字典套字典或列表的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python在游戏中的热更新实现

    Python在游戏中的热更新实现

    本文主要介绍了Python在游戏中的热更新实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • python机器学习Github已达8.9Kstars模型解释器LIME

    python机器学习Github已达8.9Kstars模型解释器LIME

    这篇文章主要为大家介绍了Github已达8.9Kstars的最佳模型解释器LIME的使用示例及功能详解,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • 通过python顺序修改文件名字的方法

    通过python顺序修改文件名字的方法

    今天小编就为大家分享一篇通过python顺序修改文件名字的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python解决%matplotlib inline标红底报错问题

    Python解决%matplotlib inline标红底报错问题

    在使用非Jupyter环境如Spyder或PyCharm时,%matplotlib inline会因为是Jupyter特有的魔法命令而导致报错,这条命令是用于Jupyter Notebook或Jupyter Qt Console中,主要作用是将matplotlib的图表直接嵌入到Notebook中显示
    2024-09-09
  • python中hasattr()、getattr()、setattr()函数的使用

    python中hasattr()、getattr()、setattr()函数的使用

    这篇文章主要介绍了python中hasattr()、getattr()、setattr()函数的使用方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • python3.9不支持pillow包解决办法

    python3.9不支持pillow包解决办法

    本文主要介绍了python3.9不支持pillow包解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06

最新评论