crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> GPF и что с ним делать?, и с другими стандартными исключениями
Гурман
  опции профиля:
сообщение 14.12.2009, 13:55
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 14.5.2009
Пользователь №: 749

Спасибо сказали: 0 раз(а)




Репутация:   0  


в MFC использовали ловушки таких исключений, специально сделанные мелкософтом, в Qt, кроме try/catch, ничего не видно, но try/catch что-то не работает... или не там его используем?

кто реализовал перехват GPF в Qt-приложениях, причем такой, чтобы кроссплатформенно работал? поделитесь опытом
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kipter
  опции профиля:
сообщение 14.12.2009, 16:14
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 6.12.2009
Пользователь №: 1281

Спасибо сказали: 0 раз(а)




Репутация:   0  


Ухххх выбивайте себе из головы этот GPF, механизм такой обработки ошибок в С++ называется: "Исключения" и использовать его в Qt сами разработчики не рекомендуют.
И дело даже уже не в том что какие то компиляторы или платформы их не поддерживают.... а в том что использование их в библиотеке порой сулит появление непонятных, сложных ошибок.

Во первых большая неоднозначность что и как произойдет если выкидывать исключение в слоте. Также если в блоке исключения испускается сигнал. Не всегда раскрутка стека станет уместной, из-за особенностей Qt удалять потомков.... может в некоторых сутиациях все пойти не так как ожидалось и получите множественные утечки.

Заместо исключения вы можете воспользоваться сигнал-слотовой обработкой ошибок.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гурман
  опции профиля:
сообщение 15.12.2009, 13:36
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 14.5.2009
Пользователь №: 749

Спасибо сказали: 0 раз(а)




Репутация:   0  


у меня нет возможности его выкинуть, поскольку необходимо при таких исключениях произвести отключение оборудования

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

Цитата(kipter @ 14.12.2009, 16:14) *
Заместо исключения вы можете воспользоваться сигнал-слотовой обработкой ошибок.


ну и как мне ей ловить GPF и прочие критичные ошибки?

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 15.12.2009, 13:58
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Кроссплатформенных решений - вроде нет, по крайней мере я не встречал.
Используй платформенные решения.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.9.2019, 5:39