Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kadet89
2 / 2 / 0
Регистрация: 18.09.2009
Сообщений: 107
#1

Правильное завершение потока при фатальной ошибке - C++

08.07.2013, 20:19. Просмотров 528. Ответов 2
Метки нет (Все метки)

Создаю поток через CreateThread(....), поток выполняется и в какой то момент в нем происходит ожидаемая фатальная ошибка. На экран выводится мессенжбокс с сообщением "Fatal Error...", если я нажимаю ок, то завершается выполнение всего приложения целиком. Мне надо сделать так, чтобы завершался только поток, а приложение продолжало работать и желательно вообще не выводить мессенжбокс с ошибкой, возможно ли такое реализовать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2013, 20:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Правильное завершение потока при фатальной ошибке (C++):

Завершение потока - C++
Как завершить поток из main чтобы все потом нормально было???

Завершение потока - C++
Здравствуйте! Вопрос такой, как сделать так, чтобы поток завершался по условию? Вот например: Основная функция: void main () { ...

Завершение потока ввода - C++
Всем привет,столкнулся с небольшой проблемой,расскажите почему так происходит собственно.. сама суть проблемы.. После ввода нескольких...

Сообщение о ошибке при заполнении массива - C++
Привет всем! Возникла проблемма при заполнении массива малыми числами. При компиляции выводится сообщение "floating constant truncated...

Отладчик при ошибке в программе (не Debug) - C++
Салют. После установки VS 2012 при аварийном завершении работы программы (не только в Debug версии или запуске из среды) раньше вызывался...

Завершение цикла при вводе EOF - C++
Пишу небольшую программку и в ней имеется вот такой код: typedef std::istream_iterator<std::string> string_input; for...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alexcoder
1464 / 678 / 89
Регистрация: 03.06.2009
Сообщений: 3,565
Завершенные тесты: 1
08.07.2013, 22:59 #2
копать отсюда http://ru.wikipedia.org/wiki/%D0%A1%...BD%D0%B8%D0%B9
и до обеда
0
Убежденный
Системный программист
Эксперт С++
15547 / 7055 / 1114
Регистрация: 02.05.2013
Сообщений: 11,467
Завершенные тесты: 1
09.07.2013, 10:17 #3
Structured Exception Handling
Vectored Exception Handling

/EH (Exception Handling Model)

SetUnhandledExceptionFilter
_set_abort_behavior
_set_invalid_parameter_handler
_set_purecall_handler
set_terminate
set_unexpected
signal

Добавлено через 10 часов 21 минуту
Но вообще, строить архитектуру программы по такому принципу выживания, как Вы описали -
это очень плохая практика. Здесь может происходить прокидывание ошибки: вместо того,
чтобы быть обнаруженной по месту, ошибка маскируется и, как это частенько бывает,
проникает в другие компоненты, например в результате порчи каких-то данных.
То есть, распостраняет свою "заразу" дальше. И рано или поздно приложение все равно
завершается аварийно, только теперь совсем в другом месте и с совсем другими симптомами.
Часто после такого поворота событий вообще не понятно, из-за чего приложение падает и
где искать причину, а само падение фантомное, воспроизвести его или проследить точку, в
которой все началось, уже не удается.

Поэтому если программа падает - лучше дать ей упасть. Но при этом сохранить максимально
полную информацию о причине падения, коды ошибок, GetLastError и т.п. Также можно снять
крэш-дамп (MiniDumpWriteDump), а затем в отладчике изучить ситуацию в ретроспективе.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2013, 10:17
Привет! Вот еще темы с ответами:

BISON, освобождение памяти при синтаксической ошибке. - C++
Здравствуйте. При работе с BISON, как освободить память выделенную под возвращаемые продукциями "объекты" в случае синтаксической ошибки?...

Завершение программы при большой загрузки процессора - C++
Вопрос такой, нужно сделать так: при выполнении программы, если в течении 5минут загрузка ЦП будет > 50% , то завершить выполняемую...

Где я ошибся при попытке вывода сообщения об ошибке? - C++
Добрый день, форумчане. Обращаюсь за советом. Накатал в CodeBlocks 10.05: #include <iostream> using namespace std; int...

Вывод сообщения об ошибке при вводе больше n значений. - C++
Всем привет! Собственно вопрос. Есть такая вот строка. Как мне вывести сообщение об ошибке, если я введу, допустим, 4 4 4 4 или 4 4 4...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru