Python如何自定义异常

在python中,只需继承Exception,就可以实现自定义异常类

class printException(Exception):
    pass
只有两行代码,是不是很简单呢,那么如何使用呢?

def testRaise():
    raise printException('printErr')
try:
    testRaise()
except printException,e:
    print e
捕捉到异常后,打印出的内容就是printErr,看来使用起来也很方便,这里要牢记,一旦使用了raise,那么之后的语句就不会再执行了,因为这里抛出了一个异常

上面的例子虽然简单,但是有一点不足,每一次raise的时候,我们都都需要写异常的说明,也就是printErr这个字符串,接下来,稍微做一点改进

class DatabaseException(Exception):
    def __init__(self,err='数据库错误'):
        Exception.__init__(self,err)
class PreconditionsException(DatabaseException):
    def __init__(self,err='PreconditionsErr'):
        DatabaseException.__init__(self,err)
新定义的两个异常类,各自有自己的初始化代码,并有一个默认的错误说明,这样raise的时候,就不需要自己再输入错误说明了

使用起来也一样的方便

def testRaise():
    raise DatabaseException()
try:
    testRaise()
except DatabaseException,e:
    print e
最终的输出结果就是“数据库错误”

如果你不确定抛出来的异常是什么,那么就except Exception ,因为这是所以异常类的基类,因此,这样写可以捕获到所有的异常类,上面的例子中,如果改成这样

except PreconditionsException,e:

那么,程序是不会捕获到异常的,因为此刻,抛出是PreconditionsException的基类,此处无法捕获,程序终止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值