我有这个异常类
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和一个字符串你好以及错误怎么做......
非常感谢
答案 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