Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 19, 2009 22:07:27

Denisko
От:
Зарегистрирован: 2009-06-19
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

валится исключение, непонятно почему

Всем здравствовать.
есть файло - binascii.py, в нем функция a2b_hex(t)

Слегка патченная, имеет вот такой код:

for a, b in pairs_gen(t):
if a < 0 or b < 0:
print “QWQWWQWQWQ”
print “exception a = %d b = %d” % (a, b)
raise TypeError('Non-hexadecimal digit found')
else:
print “AB OK”

Интересные вещи происходят - проходим по всему циклу, везде печатаем “AB OK”, в самом конце цикла дергается эксепшен “TypeError”, но “QWQWWQWQWQ” не печатается!! вообще никакая диагностика из условия “if a < 0 or b < 0:” не выводится, Только эксепшен!!
Кто нибудь сталкивался? Как это победить? или хотя бы продебажить?

ЗЫ. эксепшен точно дергается именно этот, менял строчку, а аутпуте она тоже меняется.



Офлайн

#2 Июнь 20, 2009 07:37:28

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

валится исключение, непонятно почему

Что за ОСь? Куда идет вывод?
Попробуй sys.stdout.flush() перед raise.
Хотя ситуация довольно странная. Возможно стандартный вывод (sys.stdout/print) кем то перехватывается и завершение приложения из-за необработанного исключения мешает ему вывести последнии строки, поступившие на стандартный вывод.

p.s. Было бы логичнее использовать исключение ValueError. Совершенно очевидно что ты ждешь исключительно числовые величины a и b, так что TypeError здесь не уместен и более того, может сбить с толку.

..bw



Офлайн

#3 Июнь 22, 2009 06:04:44

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

валится исключение, непонятно почему

Проверьте отступы в файле, может среди пробелов tab затесался



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#4 Июнь 23, 2009 03:03:46

Denisko
От:
Зарегистрирован: 2009-06-19
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

валится исключение, непонятно почему

Ось - ред хат. Эта функция находится в питоновских либах, так что особо править я ее не хочу, мне бы понять из-за чего..
Оно падает не всегда, а зависит от того, что придет ей на вход. Например - на ее вход приходит откуда-то из глубин кода переменная со значением “ААААААА”. Функция падает с эксепшеном. Если же перед вызовом функции ручками проставить значение переменной в “ААААААА”, все работает как положено!!!
Есть предположение, что в строку затесались какие-то непечатаемые символы.. как это определить? вывожу всю переменную в файл - все красиво, ничего подозрительного…

табы - проверял, все нормально - функция из питоновских либов…



Отредактировано (Июнь 23, 2009 03:04:36)

Офлайн

#5 Июнь 23, 2009 03:14:39

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

валится исключение, непонятно почему

Проверить реальное содержание переменной встроенным дебаггером.

Офлайн

#6 Июнь 23, 2009 18:06:03

Denisko
От:
Зарегистрирован: 2009-06-19
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

валится исключение, непонятно почему

всем спасибо. поправил конфиги (откуда берется строка) - проблема ушла. Видимо были в строке лишние непечатаемые символы. Дальше копать неохота.



Офлайн

#7 Июнь 23, 2009 19:09:28

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

валится исключение, непонятно почему

по правленный код лудше показывать

Офлайн

#8 Июнь 23, 2009 20:04:39

Denisko
От:
Зарегистрирован: 2009-06-19
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

валится исключение, непонятно почему

я не код поправил, а конфигурационный файл откуда бралась строчка. обычный тектсовый файл.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version