我们说我有这个
try:
#some code here
except Exception, e:
print e
print repr(e)
从这段代码我得到
>>
>> <exceptions.Exception instance at 0x2aaaac3281b8>
为什么我没有任何异常消息,而且,第二条消息的含义是什么?
答案 0 :(得分:4)
您有一个例外,它产生一个空的str
(即str(e)
为空)。为什么不能从您发布的有限代码中知道,您必须查看回溯以查看异常的来源。
至于repr()
,那就是要产生一个可能很丑的字符串,它允许重建对象,而不是漂亮的打印。它不是您打印例外所需要的。
答案 1 :(得分:3)
在# some code here
中抛出Exception派生的对象。此对象具有__str__
方法,该方法返回空字符串或空格而不返回__repr__
方法。
请参阅Python Help。
class SomeClass(object):
def __str__(self):
# Compute the 'informal' string representation of an object.
return 'Something useful'
def __repr__(self):
# Compute the 'official' string representation of an object. If at all possible, this should look like a valid
# Python expression that could be used to recreate an object with the same value (given an appropriate environment).
return 'SomeClass()'
o = SomeClass()
print o
print repr(o)
输出;
Something useful
SomeClass()