我应该在异常类中定义什么才能让shell以有意义的方式打印它?我尝试了以下方法:
#!/usr/bin/env python3.4
class MyError(Exception):
def __init__(self, myparam1, myparam2):
self.myparam1 = myparam1
self.myparam2 = myparam2
def __str__(self):
return 'param1: {0}, param2: {1}'.format(self.param1, self.param2)
def __repr__(self):
return self.__str__()
if __name__ == "__main__":
raise MyError(1, 2)
给了我
Traceback (most recent call last):
File "./tmp.py", line 18, in <module>
raise MyError(1, 2)
__main__.MyError
我希望看到__str__
电话的结果。
答案 0 :(得分:3)
__init__
中的Exception
方法接受异常消息作为参数。您可以使用__init__
方法调用它。
class MyError(Exception):
def __init__(self, param1, param2):
super(MyError, self).__init__('param1: {0}, param2: {1}'.format(param1, param2))
>>> raise MyError(1,2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
__main__.MyError: param1: 1, param2: 2
或者,如果您希望依赖异常的__str__
方法来提供消息,则可以将异常实例本身作为消息传递给超类__init__
:
class MyError(Exception):
def __init__(self, myparam1, myparam2):
super(MyError, self).__init__(self)
self.myparam1 = myparam1
self.myparam2 = myparam2
def __str__(self):
return 'param1: {0}, param2: {1}'.format(self.myparam1, self.myparam2)
def __repr__(self):
return str(self)