用户定义的例外疑问

时间:2010-12-20 13:23:22

标签: python

我有这个异常类

class Value(Exception):
    def __init__(self,val):
        self.val = val

    def __str__(self):
        return repr(self.val)

raise Value('4')

,例外是

Traceback (most recent call last):
File "<module1>", line 20, in <module>
Value: '4'

------------------------------------更新------

我发现了一个拼写错误,感谢mark ....但我现在的问题是说我要显示4和一个字符串你好以及错误怎么做......

非常感谢

3 个答案:

答案 0 :(得分:2)

我认为你打算在这里写val而不是value

def __str__(self):
    return repr(self.val) # <--- not self.value

要显示多个值,我建议str.format(需要Python 2.6或更高版本)。例如:

def __str__(self):
    return "Hello: {0}".format(self.val)

另一个例子:

def __str__(self):
    return "val1 = {}, val2 = {}".format(self.val1, self.val2)

答案 1 :(得分:0)

>>> class Value(Exception):
 def __init__(self, val):
  self.val = val
 def __repr__(self):
  return ' ,'.join(str(x) for x in self.val) + ' hello world!'
 def __str__(self):
  return repr(self)

当然你可以在 init 中做任何你想做的事情,因为使用语法* val(而不是init中的val)来使用你在示例中显示的类Value然后只需调用

价值(4,2)或价值(4)等......

编辑:

只需在repr中返回self.msg ...

def __repr__(self):
    return self.val + self.msg #or whatever you want

我之前的例子展示了如何接受和打印多个值...如果你只需要一个值和一个消息,并显示它们,你可以这样做:

class Value(Exception):
    def __init__(self, val, msg):
        self.val = val
        self.msg = msg
    def __repr__(self):
        return 'Error code: %s  Error message: %s' % (self.val, self.msg)
    def __str__(self):
        return repr(self)

答案 2 :(得分:0)

  

我的问题现在就是说我要显示4和一个字符串你好以及错误怎么做......

您应该将代码放在try / except代码中以处理异常。这是一个例子:

try:
    if something:
       raise Value('4')
    # do something else here
except Value as valueException:
    print "Hello, it raises an Value exception '%s'" % valueException.message