|
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
|
||||||
Как отлавливать exceptions от stl?09.08.2015, 23:35. Показов 2047. Ответов 15
Метки нет (Все метки)
Использую вектор,
в описнии написано Return value
0
|
||||||
| 09.08.2015, 23:35 | |
|
Ответы с готовыми решениями:
15
Как правильно сделать рефакторинг Exceptions Как отлавливать исключения? Как отлавливать p2p трафик |
|
Ушел с форума
|
||||||
| 09.08.2015, 23:42 | ||||||
Сообщение было отмечено mh-coder как решение
Решение
Есть мнение, что отлавливать bad_alloc - пустая затея, потому что вряд ли вы в такой ситуации сможете сделать что-то адекватное из-за нехватки памяти. Разумеется, если только это не результат попытки выделить несколько гигов за один new...
1
|
||||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||
| 10.08.2015, 09:22 | ||
|
0
|
||
|
Ушел с форума
|
|
| 10.08.2015, 10:01 | |
|
А в этом есть какой-то смысл ? Ну упало приложение - и пусть, разве не так ?
Система покажет стандартное окошко, что, де, приложение было неожиданно завершено и будет закрыто, отчет находится там-то и там-то и включает такие-то данные. Все. В чем смысл еще делать "что-то" ? Ну может быть, такое можно сделать для того, чтобы успеть сохранить открытый документ. Но я сильно сомневаюсь, что получится это сделать в условиях нехватки памяти (если только речь не идет о банальном FlushFileBuffers/CloseHandle).
1
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 10.08.2015, 10:33 | ||
|
0
|
||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|
| 10.08.2015, 11:11 | |
|
Убежденный, соединения мож какие успеть закрыть, установить перезапуск программы. Придумать можно что-нибудь.
0
|
|
|
Ушел с форума
|
|
| 10.08.2015, 11:34 | |
|
Видимо, здесь следует разделять два случая:
1) Когда bad_alloc является ожидаемым, как в примере, который привел Renji. Тут да, я согласен, наверное можно и нужно навесить try/catch и обработать исключение соответствующим образом, после чего продолжить работу. 2) Когда bad_alloc возникает как следствие исчерпания свободной памяти. И вот в данном случае мы вряд ли уже можем что-то сделать. Если памяти нет, то вызов любой функции, которая пытается хоть чуть-чуть еще захапать для своей работы, будет завершаться неудачей. Простое присваивание или копирование std::string уже вызовет проблемы. Короче, поведение catch- хэндлера станет непредсказуемым. И в итоге оригинальное исключение будет замаскировано, а вместо него мы получим неизвестно что.
0
|
|
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||
| 10.08.2015, 11:39 | ||
|
0
|
||
|
Ушел с форума
|
|
| 10.08.2015, 11:44 | |
|
SatanaXIII, тогда пойдем дальше: как вы гарантируете, что
все функции, вызываемые внутри catch-хэндлера, будут использовать именно эту, заранее зарезервированную, память ?
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||||||
| 10.08.2015, 11:50 | |||||||
0
|
|||||||
|
Неэпический
|
||||||||||||
| 10.08.2015, 12:40 | ||||||||||||
А если соорудить к этому коду такое
???
0
|
||||||||||||
|
Ушел с форума
|
||
| 10.08.2015, 13:56 | ||
между вызовом delete и "делаем что-то аварийное" ? Croessmah, по Вашему примеру: у std::cout есть гарантия, что он не трогает new/delete ?
0
|
||
|
Неэпический
|
||
| 10.08.2015, 14:16 | ||
|
0
|
||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 10.08.2015, 14:42 | ||
|
0
|
||
|
|
||
| 11.08.2015, 13:18 | ||
|
И либо переписываем прогу, либо пусть пользователь разгружает/покупает память. Хотя конечно такие отловы вероятно имеют смысл в специфического рода программах, которые просто монопольно отжирают память. Но в большинстве случаев вероятно нехватка памяти - кривая логика программ или несоответствие сис.требованиям.
0
|
||
| 11.08.2015, 13:18 | |
|
Помогаю со студенческими работами здесь
16
[Exceptions] Как правильно внедрить новое исключение в существующее API? Как отлавливать события мыши в Excel? Как отлавливать ввод каждого символа Как отлавливать нажатие клавиш глобально Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|