Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375

Почему некоторые исключения невозможно обработать стандартным образом при помощи try catch?

25.05.2018, 01:16. Показов 671. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему некоторые исключения невозможно обработать стандартным образом при помощи try catch?
Вместо обработки программу тупо завершается.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.05.2018, 01:16
Ответы с готовыми решениями:

Try Exept, как правильно обработать некоторые исключения?
Всем здрасте. Есть фунция, которая отсылает в телеграм картинку и ждет пока я пришлю в ответ текст с нее. Я поместил функцию в блок try, а...

Почему невозможно открыть код таким образом и почему форма с ним никак не контактирует
И при двойном клике на элемент, открывается, а точнее переходит, на исходный код. Никак не пойму в чем проблема, а ответ по-любому...

Создать программу, обрабатывающую исключения при работе с вещественными числами с использованием инструкции try… catch…f
3(k+1)/7k^2+19 Добавлено через 5 минут 3(k+1)/7k^2+19

8
 Аватар для Cortas
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
25.05.2018, 02:23
Приведите пример, где у вас программу просто завершается, возможно причина в том, что вы ловите не тот тип исключения, либо при исключении функция, в которой оно произошло, резко прерывает программу(хотя так и не должно быть).
0
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
25.05.2018, 04:24  [ТС]
Вот простенький пример:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
auto func() -> void
{
    int * p {new int};
    shared_ptr<int> sp1 {p};
    shared_ptr<int> sp2 {p};
}
 
auto main(int argc, char * argv[]) -> int
{
    try
    {
        func();
    }
    catch (...)
    {
        cout << "Ошибка создания группы shared_ptr, владеющих одним и тем же объектом" << endl;
    }
 
    system("pause");
    return EXIT_SUCCESS;
}
0
 Аватар для Cortas
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
25.05.2018, 09:45
Сразу говорю, могу быть не компетентен по части shared_ptr, однако при следовании по коду удалении второго объекта, я не нашел, чтобы в случае попытки удаления того же самого участка памяти, shared_ptr кидал исключение.
Привожу код, который исполняется при удалении объекта:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
~shared_ptr() _NOEXCEPT//А вот этот вот макрос на и говорит о том, что функция ничего не кидает
    {   // release resource
        this->_Decref();
    }
 
void _Decref()
    {   // decrement reference count
        if (_Rep != 0)
            _Rep->_Decref();
    }
 
void _Decref()
    {   // decrement use count
        if (_MT_DECR(_Mtx, _Uses) == 0)
            {   // destroy managed resource, decrement weak reference count
            _Destroy();
            _Decwref();
            }
    }
 
virtual void _Destroy()//Собственно тут система и падает при удалении второго объекта
    {   // destroy managed resource
        delete _Ptr;
    }
0
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
25.05.2018, 11:02  [ТС]
Цитата Сообщение от Cortas Посмотреть сообщение
Сразу говорю, могу быть не компетентен по части shared_ptr, однако при следовании по коду удалении второго объекта,
Я тоже пока еще не очень компетентен, поэтому и спрашиваю.

Ну не знаю, почему Вы так говорите, но у меня в Visual Studio выскакивает окошко, которое так и говорит, что имеет место необработанное исключение.
Если я запускаю вне Visual Stidio, то консольное окно просто появляется и сразу закрывается.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
25.05.2018, 14:09
Потому что delete не кидает исключений.
0
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
25.05.2018, 14:57  [ТС]
Цитата Сообщение от MrGluck Посмотреть сообщение
Потому что delete не кидает исключений.
Ну так, а что там тогда происходит?
Visual Studio говорит, что имеет место необработанное исключение.

Добавлено через 14 минут
И очень даже отбрасывает delete исключение.
Попробуйте вот такой код:

C++
1
2
3
4
5
6
7
8
9
10
__try
{
    int * a {new int {42}};
    delete a;
    delete a;
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
    cout << "Delete two times" << endl;
}
0
25.05.2018, 15:06
 Комментарий модератора 
Просто Саша, пожалуйста, прочитайте правила форума.
Особое внимание обратите на пункт 4.3 (порядок именования тем).
0
 Аватар для NightSkyLark
21 / 21 / 22
Регистрация: 13.05.2018
Сообщений: 71
25.05.2018, 16:05
Цитата Сообщение от Просто Саша Посмотреть сообщение
__try
{
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
дак это к С++ не относится
Структурированная обработка исключений поддерживается в Win32 для исходных файлов как на C, так и на C++. Однако она не предназначена специально для C++.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.05.2018, 16:05
Помогаю со студенческими работами здесь

Почему при использовании компонента TMediaPlayer ,некоторые mp3 открываются а некоторые нет?
Почему при использовании компонента TMediaPlayer ,некоторые mp3 открываются а некоторые нет EMCIDeviceError с сообщением &quot;No MCI...

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

Исключения Try {} catch() {}
Здравствуйте. Подскажите пожалуйста, как правильно отлавливать исключения. Вот у меня есть ошибка в раздел &quot;catch&quot;...

Исключения try-catch
Здравствуйте, пытаюсь с помощь try-catch сделать обработку исключений. #include &lt;iostream&gt; #include &lt;cmath&gt; #include...

Как при помощи FSO можно обработать такой (см.внизу)текстовый файл(1.txt) и вывести её на печать !?
Здравствуйте! Вопрос такой как при помощи FSO можно обработать такой (см.внизу)текстовый файл(1.txt) и вывести её на печать !???? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru