Найти - Пользователи
Полная версия: try except не отлавливает ошибку
Начало » Python для новичков » try except не отлавливает ошибку
1
@cckyi_boxxx
 GtkWarning: gtk_widget_realize: assertion `GTK_WIDGET_ANCHORED (widget) || GTK_IS_INVISIBLE (widget)' failed
  self._sevtbox.realize()
это выдает в stdout несмотря на то что находиться в try except , но правда к краху самого гуя не приводит …
собсна почему и как его заставить ее ловить
adray
Какие исключения в except перехватываются?
Возможно, GtkWarning не имеет никакого отношения к python exceptions/warnings. Посмотрите дерево наследования
@cckyi_boxxx
в except ничего не указываю что-бы хавало все исключения какие-бы не возникали а вот то что возможно GtkWarning не имеет никакого отношения к python exceptions/warnings являясь исключением gtk , тогда по непонятным причинам гуй не крашиться и работает вобщем странно оно как-то …

посоветуйте ктонить хороший русскоязычный форум по gtk (имееться ввиду не pygtk а именно gtk)
bw
Странный человк. Так есть оно, исключение, или же его нет?
Ты 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
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB