2015-03-04 1 views
1

Скажем, у меня есть этотИсключение типа репрезентации: что это значит?

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

Из этого блока кода я получаю

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

Почему у меня нет никаких сообщений об исключительной ситуации и, кроме того, что же означает второе сообщение?

+1

Это зависит от того, какой «некоторый код» есть. –

+0

@JohnZwinck: это более общий вопрос. Не сосредотачивайтесь на коде, который ограничен многими логикой, что я не успеваю объяснить. – DonCallisto

ответ

4

У вас есть исключение, которое производит пустой str (т. Е. str(e) пуст). Почему это не может быть известно из ограниченного кода, который вы опубликовали, вам придется посмотреть трассировку, чтобы узнать, откуда взялось исключение.

Что касается repr(), это предназначено для создания строки, которая может быть уродливой, что позволяет восстановить объект, а не красивую печать. Это не то, что вы хотите для печати исключений.

+0

Как я могу посмотреть на трассировку? – DonCallisto

+1

Используйте https://docs.python.org/2/library/traceback.html –

2

Объект, производный от исключения, находится в #some code here. Этот объект имеет метод __str__, который возвращает пустую строку или пробелы и метод __repr__.

См. Python Help.

class SomeClass(object): 
    def __str__(self): 
    # Compute the 'informal' string representation of an object. 
    return 'Something usefull' 
    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 usefull 
    SomeClass() 
Смежные вопросы