Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как в конструкторе объекта отказаться от его создания?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLpetravQt в принципе не работает с исключениями. Это их решение. Твой код не должен выбрасывать исключения в вызовах Qt. Т.е, например, ты не должен вылетать из слота по исключению, не должен вылетать по исключению из любого перегруженного метода Qt и т.д. Есть детали, можно установить глобальный обработчик сообщений Qt и там поставить свой catch(...), но тут я не помню. Глобальный обработчик событий не прервет нить выполнения, в которой появилась проблема. Если программа однопоточная, то вообще ничего не произойдет до освобождения потока. В моем случае есть основной поток, обслуживающий рабочие потоки, но надеяться на то, что он особо быстро отработает не приходится. Прости, не очень понял, что ты хотел сказать. Без обид, я бы пока на твоём месте поостерёгся писать многопоточные приложения. Это сервера SQL почти прозрачно обеспечивают многопользовательский режим с гарантией потокобезопасности - да и там правила игры знать нужно. AlekseySQLГде можно подробнее прочитать про все ограничения на использование исключений в Qt? Выше дали ссылку на qt.io. Но, а так здравый смысл и такие статьи. У Саттера и Александресску "Стандарты кодирования на С++" (по памяти) есть раздел про границу между модулями и почему между ними нельзя бросать исключения. Очень похоже на текущий вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2017, 16:52 |
|
||
|
Как в конструкторе объекта отказаться от его создания?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLСейчас в исключительно ситуации я делаю такие странные действия: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. Хочется вместо блока: Код: plaintext 1. 2. Писать просто: Код: plaintext 1. Да, код бредовый... AlekseySQLИ еще вопрос: насколько уместна попытка подождать и попытаться выделить память еще раз? Бесполезна. Откуда память-то возмётся? можно что-то попытаться освободить, и ещё раз попробовать выделить память... Хотя конечно это на 100% зависит от операционной среды (компилятор и операционная система) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2017, 18:03 |
|
||
|
Как в конструкторе объекта отказаться от его создания?
|
|||
|---|---|---|---|
|
#18+
Приплюснутыйникак не может быть верным. Объект, который никогда не был создан, остаться живым не может.я не совсем правильно выразился. То, что выделено в конструкторе, остаётся жить. Проверил сохранением this перед throw из конструктора, после исключения все данные(члены класса простых типов) из скопа конструктора были валидными, т.е. выделенные данные пропадут. Кто был с конструктором - удалятся. ПриплюснутыйНа будущее: есть такая штука — стандарт. Очень помогает уверенно выяснить что и как должно вести себя в языке, без экспериментирования. Спасибо, но не во всех компиляторах всё всегда по стандарту бывает, а во-вторых, знание механизмов на практике способствует лучшему пониманию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 05:21 |
|
||
|
|

start [/forum/topic.php?fid=57&startmsg=39544656&tid=2018053]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 283ms |
| total: | 522ms |

| 0 / 0 |
