Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 19, 2012 19:51:36

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

try except не отлавливает ошибку

 GtkWarning: gtk_widget_realize: assertion `GTK_WIDGET_ANCHORED (widget) || GTK_IS_INVISIBLE (widget)' failed
  self._sevtbox.realize()
это выдает в stdout несмотря на то что находиться в try except , но правда к краху самого гуя не приводит …
собсна почему и как его заставить ее ловить



Офлайн

#2 Окт. 19, 2012 21:18:22

adray
Зарегистрирован: 2012-09-15
Сообщения: 123
Репутация: +  18  -
Профиль   Отправить e-mail  

try except не отлавливает ошибку

Какие исключения в except перехватываются?
Возможно, GtkWarning не имеет никакого отношения к python exceptions/warnings. Посмотрите дерево наследования

Офлайн

#3 Окт. 19, 2012 21:25:44

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

try except не отлавливает ошибку

в except ничего не указываю что-бы хавало все исключения какие-бы не возникали а вот то что возможно GtkWarning не имеет никакого отношения к python exceptions/warnings являясь исключением gtk , тогда по непонятным причинам гуй не крашиться и работает вобщем странно оно как-то …

посоветуйте ктонить хороший русскоязычный форум по gtk (имееться ввиду не pygtk а именно gtk)



Офлайн

#4 Окт. 20, 2012 12:02:56

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

try except не отлавливает ошибку

Странный человк. Так есть оно, исключение, или же его нет?
Ты except'ом никак не отловишь такой вывод.
Есть два варианта:

1. Переопределить вывод (1=stdout и 2=stderr). Например (не проверял):

# ...
sys.stdout.flush()
sys.stderr.flush()
fd  = os.open(os.devnull, os.O_WRONLY)
fd1 = os.dup(1)
fd2 = os.dup(2)
os.closerange(1, 3)
os.dup2(fd, 1)
os.dup2(fd, 2)
# ...
os.closerange(1, 3)
os.dup2(fd1, 1)
os.dup2(fd2, 2)
os.close(fd)
os.close(fd1)
os.close(fd2)

2. Покопаться в GTK+/GObject/GLib, выяснить как там система протоколирования работает и настроить её по своему, уверен что существует оф. API по этому вопросу.

Правильным является второй вариант, правда он не так впечатляет как первый :-).

..bw



Отредактировано bw (Окт. 20, 2012 12:04:05)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version