Python3入门之抛出自定义异常

Python3 入门之抛出自定义异常

在Pyhton开发中,我们可以用raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是一个异常的实例或者是 Exception 的子类。
举例: 在程序运行中,我们需要用户至少输入3个字符,而用户只输了一个,程序并不一定报错,这时,我们就可以通过自定义异常的方式提醒用户规范输入。
修改前的代码:

def main():
    s = input('请输入至少三个字符--> ')
main()

此时,如果只输入一个字母,程序并不会报错,也没有提示用户正确输入!

添加自定义异常后的代码

class ShortInputException(Exception):         #继承Exception
    '''自定义的异常类'''
    def __init__(self, length, atleast):
        super().__init__()         #这条语句在下文有说明
        self.length = length
        self.atleast = atleast

def main():
    try:
        s = input('请输入至少三个字符--> ')
        if len(s) < 3:    #判断用户是否输入至少三个字符
            # raise引发一个你定义的异常
            raise ShortInputException(len(s), 3)      #raise抛出一个自定义异常类的实例的引用
    except ShortInputException as result:         #result用来接收自定义异常类的实例的引用,即相当于异常类的实例
        print('ShortInputException: 输入的长度是 %d,长度至少应是 %d'% (result.length, result.atleast))
        #由于result也指向异常类的实例,可以通过调用result的实例属性进行输出
    else:
        print('没有异常发生.')

main()

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值