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

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

25.05.2018, 01:16. Показов 610. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru