python 异常

第一:基于类的异常

class General:
    pass
class Specific(General):
    pass

raise Specific()
自定义异常类最好继承Exception内置异常类,但这并不是必须的。继承内置异常类,可以让自定义异常类获得一些

免费的有用的接口和工具。

class MyException(Exception):
    pass
class Specific(MyException):
    pass

第二:定义异常文本

class MyException:
    pass

raise MyException
输出:

  File "test.py", line 4, in <module>
    raise MyException
__main__.MyException: <__main__.MyException instance at 0x7f1d90714638>
显示并不是很友好,可以自定义显示信息。

class MyException:
    def __str__(self):
        return "my-fault"

raise MyException
输出:

  File "test.py", line 5, in <module>
    raise MyException
__main__.MyException: my-fault
通过__str__可以实现自定义异常文本


如果继承于内置异常类Exception,则构造方法的参数会自动存储并显示在异常消息中。

class MyException(Exception):
    pass

raise MyException('a', 'b')
输出:

Traceback (most recent call last):
  File "test.py", line 4, in <module>
    raise MyException('a', 'b')
__main__.MyException: ('a', 'b')
同样,如果不喜欢这个默认输出信息,可以重新__str__方法来实现自定义显示。


第三:发送额外数据

class MyException(Exception):
    def __init__(self, file):
        self.file = file

def catcher():
    try:
        raise MyException("my-file")
    except MyException, X:
        print X.file

catcher()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值