Russian Qt Forum
Апреля 20, 2025, 07:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 3 4 [5]   Вниз
  Печать  
Автор Тема: Стратегия обработки ошибок пользователя с помощью собственных классов исключений  (Прочитано 57630 раз)
8Observer8
Гость
« Ответ #60 : Октября 24, 2014, 13:06 »

Я немного работал с Java и C#, там примерно такая же схема
Записан
8Observer8
Гость
« Ответ #61 : Октября 28, 2014, 20:55 »

Интересное мнение по поводу исключений:

Цитата:
Во-первых, сделать проверку на ошибку ничуть не проще, если ее надо протащить на неизвестное количество уровней выше. Код возврата надо тащить с уровня на уровень вручную. Исключение тащить никуда не надо - оно само летит.

Во-вторых, что более важно: throw бросает наверх не какой-то жалкий код ошибки, а целый объект пользовательского типа любого размера. В этот объект вы можете запихать любое количество информации, которое будут аккуратно перенесено с самого низу наверх, к обработчику исключения. Пока исключение летит снизу вверх, его можно перехватывать на полпути, дополнять контекстной информацией и посылать дальше вверх.

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

И т.д. и т.п.

А здесь про Qt и исключения:

Цитата:
When Qt was started exceptions were not available for all the compilers that needed to be supported by Qt. Today we are trying to keep the APIs consistent, so modules that have a history of not using exceptions will generally not get new code using exceptions added.
You will notice exceptions are used in some of the new modules of Qt.
« Последнее редактирование: Октября 28, 2014, 20:58 от 8Observer8 » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #62 : Октября 28, 2014, 21:07 »

Интересное мнение по поводу исключений:

Цитата:
When Qt was started exceptions were not available for all the compilers that needed to be supported by Qt. Today we are trying to keep the APIs consistent, so modules that have a history of not using exceptions will generally not get new code using exceptions added.
You will notice exceptions are used in some of the new modules of Qt.

А про какие новые модули говорится?
Записан

8Observer8
Гость
« Ответ #63 : Октября 28, 2014, 21:18 »

Может быть это: http://qt-project.org/doc/qt-5/qexception.html
Записан
Akon
Гость
« Ответ #64 : Октября 31, 2014, 10:08 »

8Observer8: К сожалению, у меня нет достаточно времени, чтобы вникать в ваши довольно объемные посты и код. ИМХО, лучший путь глубоко изучить Qt (как и любой другой тоолкит) - это изучить исходники. Запустите отладчик и пройдитесь по коду вызова слота, в котором генерируется исключение.
Записан
8Observer8
Гость
« Ответ #65 : Ноября 06, 2014, 16:28 »

Цитировать
Запустите отладчик и пройдитесь по коду вызова слота, в котором генерируется исключение
Спасибо, что обратили внимание. Как будет время - посмотрю. Как я понял из ваших слов - применение исключений в слотах что-то нарушает в работе Qt механизма сигнал\слот
Записан
Страниц: 1 ... 3 4 [5]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.022 секунд. Запросов: 19.