У меня есть приложение wxPython, которое использует внешний файл конфигурации. Я хочу предоставить дружественные диалоги сообщений, которые появляются, если есть какие-либо ошибки конфигурации. Я попытался сделать это, поместив мой вызов app.MainLoop () в оператор try / исключением.
Приведенный ниже код работает для кода инициализации в моем классе фрейма MainWindow, но не перехватывает никаких исключений, возникающих в MainLoop. Как я могу поймать и эти исключения?
if __name__ == '__main__':
app = MyApp(0)
try:
MainWindow(None, -1, 'My Cool App')
app.MainLoop()
except ConfigParser.Error, error_message:
messagebox = wx.MessageDialog(None, error_message, 'Configuration Error', wx.OK | wx.ICON_ERROR)
messagebox.ShowModal()
Я читал некоторые упоминания о методе OnExceptionInMainLoop, который можно переопределить в классе wx.App, но источник, который я читаю, должен быть устаревшим (2004), так как wx.App, похоже, больше не имеет метода, имя.
EDIT:
Мне нужно иметь возможность перехватывать необработанные исключения во время основного цикла, чтобы я мог дополнительно обрабатывать их и отображать их в диалоговых окнах ошибок, не передавать молча и не завершать работу приложения.
Решение sys.excepthook слишком низкого уровня и не очень хорошо работает с потоком mainloop wxPython. В то время как ссылка на другой ответ делает ту же самую попытку / за исключением обтекания основного цикла, который не работает, еще раз, из-за того, что wxPython порождает другой поток для app / ui.