用户自定义异常问题
我有一个异常类
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和字符串“hello”,该怎么做……
非常感谢
3 个回答
0
我现在的问题是,比如我想显示数字4和字符串hello,还有错误信息,我该怎么做……
你应该把你的代码放在一个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
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类,然后简单地调用
Value(4, 2)或者Value(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
我想你这里应该写的是 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)