|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.10.2013, 13:46 | #1 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
Исключение внутри потока
День добрый, не понятная ситуация с потоками, если внутри потока возникает исключение то программа просто падает, т.е. не появляется окно с ошибкой, а винда просто предлагает зарыть или перезапустить приложение. Когда исключение возникает в процессе отладки, жму F5 опять это же исключение, еще жму, опять это же, и так можно жать хоть целый день. Может есть какая-то особенность при работе с исключениями в потоках.
P.S. Поток создается один |
20.10.2013, 14:17 | #2 |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Есть особенность при работе с исключениями вообще: необработанное исключение (Unhandled exception) приводит к аварийному завершению программы (" винда просто предлагает зарыть или перезапустить приложение").
Во избежание оного оборачивайте места, в которых возможно возникновение исключения в блоки try { ... } catch { } (http://msdn.microsoft.com/ru-ru/library/dszsf989.aspx) Во время отладки само исключение перехватывает Exception Assistant (или как там его), встроенный в Visual Studio, не полагайтесь на него А отдельный поток тут в целом не при чем
Благодарить в репутацию. Проклинать — туда же
|
20.10.2013, 14:24 | #3 | |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
так дело в том что все это в блоке try catch происходит, если я в catch передаю исключение процедуре "выше" throw .... то такая фигня и получается, конечно если я буду выводить текст ошибки через MessageBox.Show и после прерывать поток то все норм.
Цитата:
|
|
20.10.2013, 14:37 | #4 | |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Я не видел ваших остальных программ, поэтому не могу прокомментировать их поведение.
Стандартная реакция CLR на исключения выглядит так: Цитата:
Благодарить в репутацию. Проклинать — туда же
|
|
20.10.2013, 14:58 | #5 | |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
Цитата:
у меня так: в таймере происходит создание потока, поток выполняет определенную процедуру. создание потока обернуто в блок try catch Код:
|
|
20.10.2013, 15:11 | #6 | |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Верно, поскольку метод "timer1_Tick" уже закончится к тому моменту, когда в методе Start() возникнет исключение.
Чтобы отловить исключение, блок try-catch следует поместить в сам метод Start() Так у вас сейчас: Код:
Код:
Цитата:
Благодарить в репутацию. Проклинать — туда же
Последний раз редактировалось Luuzuk; 20.10.2013 в 15:13. |
|
20.10.2013, 15:15 | #7 | |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
Цитата:
|
|
20.10.2013, 16:05 | #8 | |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Цитата:
Изобретатель велосипедов
|
|
20.10.2013, 16:16 | #9 | ||
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Цитата:
Цитата:
p.s. с механизмами генерации и обработки исключений ознакомлен
Благодарить в репутацию. Проклинать — туда же
|
||
20.10.2013, 19:55 | #10 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Luzzuk, в вас у меня не было сомнений, я это как раз для ТС написал: мало ли, пригодится)
Изобретатель велосипедов
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Explorer.exe Исключение неизвестное программное исключение Windows XP, что делать? | Igorilla | Windows | 6 | 02.04.2013 22:49 |
Исключение неизвестное программное исключение... | Host-2013 | Паскаль, Turbo Pascal, PascalABC.NET | 19 | 09.02.2013 21:30 |
Исключение при работе потока | Berlioz | Помощь студентам | 2 | 07.01.2013 08:51 |
Исключение при дессериализации "обнаружен конец потока до завершения разбора" | 6salo6 | C# (си шарп) | 3 | 06.02.2012 19:38 |
Должно быть 3 потока. А диспетчер задач показывает, что потока создано 2 | BEL9ILLI | Общие вопросы Delphi | 3 | 06.12.2011 20:26 |