在python中,如何让自己的异常类漂亮地打印在shell中?

在python中,如何让自己的异常类漂亮地打印在shell中?,python,exception,exception-handling,Python,Exception,Exception Handling,为了让shell以有意义的方式打印它,我应该在exception类中定义什么?我尝试了以下方法: #!/usr/bin/env python3.4 class MyError(Exception): def __init__(self, myparam1, myparam2): self.myparam1 = myparam1 self.myparam2 = myparam2 def __str__(self): return '

为了让shell以有意义的方式打印它,我应该在exception类中定义什么?我尝试了以下方法:

#!/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
回溯(最近一次呼叫最后一次):
文件“/tmp.py”,第18行,在
升起我的箭头(1,2)
__主菜单。我的错误

我想看到的是
\uuuu str\uuu
调用的结果

Exception中的
\uuuuu init\uuuu
方法接受异常消息作为参数。您可以从
\uuuu init\uuuu
方法调用它

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
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)