异常repr类型:这意味着什么?

时间:2015-03-04 10:22:07

标签: python

我们说我有这个

try:
 #some code here
except Exception, e:
 print e
 print repr(e)

从这段代码我得到

>>
>> <exceptions.Exception instance at 0x2aaaac3281b8>

为什么我没有任何异常消息,而且,第二条消息的含义是什么?

2 个答案:

答案 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()