第一:基于类的异常
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()
5498

被折叠的 条评论
为什么被折叠?



