Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
213 / 139 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
.NET 4.x

При возникновении исключения приложение тупо вырубается

27.03.2012, 22:00. Показов 3288. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Непонятная для меня проблема. Генерирую в коде искуственно исключение. По идее должно ведь стандартное окошко фреймворка появиться с сообщением об исключении, но его почему то нет!
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;
using System.Windows.Forms;
 
namespace TestException
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            throw new Exception("Ану покажи себя в окошке исключения!");
            InitializeComponent();
        }
    }
}
На строчке генерации исключения это приложение тупо вырубается без всяких сообщений! Почему так? Это же не правильно вроде...

Добавлю, что если запустить этот код через отладку студии, то студия покажет желтым строку с местом возникновения исключения, как все и должно быть. Приложение вырубается без всяких ошибок только если его запустить напрямую из винды..
Вложения
Тип файла: rar TestException.rar (50.1 Кб, 11 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.03.2012, 22:00
Ответы с готовыми решениями:

Продолжение работы цикла при возникновении исключения
У меня есть цикл который обрабатывает тексты. for (int i = 0; i < n; i++) { ...... } ...

Уничтожить объект при возникновении в конструкторе обрабатываемого исключения
Наверняка ведь случается, что в конструкторе возникает исключение (неправильные данные и т.д.), а как в таком случае прописать в...

Получение возвращаемого значения при возникновении события
Есть событие public delegate NewRecivedPacket RecivedNewMessage(); private event RecivedNewMessage newPacket; ...

11
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
27.03.2012, 22:38
Tolias28, читай это http://msdn.microsoft.com/ru-r... s.90).aspx

Добавлено через 33 секунды
в частности это http://msdn.microsoft.com/ru-r... s.90).aspx
0
 Аватар для Smekalisty
42 / 42 / 7
Регистрация: 23.04.2010
Сообщений: 93
27.03.2012, 22:44
Tolias28, у меня этот код работает
0
213 / 139 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
27.03.2012, 22:46  [ТС]
nio, вы меня неправильно поняли. Я блоки try-catch-finally использую в своем коде уже давно и уже достаточно хорошо с ними знаком и знаю как их использовать! Меня интересует вовсе не это! Интересует меня другое. В приложении иногда невозможно предусмотреть все ошибки, допущенные самим программистом, и вот тогда должно выскакивать стандартное окошко с ошибкой(если исключение возникло не в блоке try или для него нет подходящего catch). Но проблема в том, что это стандартное окошко иногда почему-то не появляется. Вот эта тема меня интересует, а не то, о чем вы подумали.
0
213 / 139 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
27.03.2012, 22:52  [ТС]
Цитата Сообщение от Smekalisty Посмотреть сообщение
Tolias28, у меня этот код работает
то есть, при выполнении моего кода у вас появляется окошко подобно этому?
Миниатюры
При возникновении исключения приложение тупо вырубается  
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
27.03.2012, 22:58
Цитата Сообщение от Tolias28 Посмотреть сообщение
В приложении иногда невозможно предусмотреть все ошибки, допущенные самим программистом, и вот тогда должно выскакивать стандартное окошко с ошибкой(если исключение возникло не в блоке try или для него нет подходящего catch). Но проблема в том, что это стандартное окошко иногда почему-то не появляется.
Никто никому ничего не должен
Из ничего ничего не бывает (китайская мудрость)
Более того, программа не дожна ловить ошибки программиста, он должен делать это сам или хотябы предусмотреть механизм для этого.
Читаем msdn
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
27.03.2012, 23:09
Tolias28, у вас не 64-битовая система, случаем?
0
213 / 139 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
27.03.2012, 23:18  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
Более того программа не дожна ловить ошибки программиста, он должен делать это сам или хотябы предусмотреть механизм для этого.
Спасибо, что сказали, а то я не знал. Да блин, что вы меня отправляете на мсдн, если я только что оттуда.

Вижу, вы всеравно в своем же духе... Придется поведать полную историю, иначе еще сейчас меня пошлете не дай Бог типы переменных изучать...
Все дело вот в чем. У меня есть одно приложение, уже достаточно сложное и объемистое. В нем естественно не обошлось без блоков try-catch. Но дело в том, что все же в моем приложении происходит время от времени одно исключение, причину которого я пока-что никак не могу выловить. А так как код очень большой и методов, обработчиков в нем очень много, то каждый метод и обработчик оборачивать в блоки try... Для этого есть глобальный перехват исключений ведь. Потому я сегодня отправился изучать его и по ходу тестирования кода решил попробовать, как будет работать мое приложение без глобального перехвата исключений, для чего решил его вручную сгенерировать такой строчкой кода:
C#
1
throw new Exception("My Exception");
и очень удивился, когда при достижении к этой строчке мое приложение просто упало без вывода системного окошка. Вот я и пытаюсь понять, почему это системное окошко иногда появляется, а иногда приложение падает без всякого окошка. По крайней мере при возникновении того исключения в реальном приложении, которое у меня возникает время от времени, системное окошко появляется всегда.
Почему оно иногда появляется, а иногда нет и вместо него приложение тупо падает?

Я просто хотел вручную проимитировать ситуацию исключения, пропущенного программистом...

Добавлено через 1 минуту
Цитата Сообщение от kolorotur Посмотреть сообщение
Tolias28, у вас не 64-битовая система, случаем?
нет, 32-битная

Добавлено через 4 минуты
nio, и еще. Почему вы на меня так с высока смотрите, как на человека, который только программировать начал? Я понимаю, что вы модератор и все дела.. но просто это, как бы так сказать, раздражает, когда тебя посылают изучать то, что ты прекрасно знаешь, думая о тебе, как о тупом чайнике.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
27.03.2012, 23:21
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Tolias28 Посмотреть сообщение
32-битная
Ясно, спасибо.

Проблема у вас в том, что по сути исключение возникает еще до вызова Application.Run, а значит до подключения всех "фентиклюшек" для работы с окнами, типа message pool.
Говоря проще, исключение вылетает в методе Main, а метод Main запускается в режиме ядра, в котором исключения не всплывают до пользователя. Вместо этого закрашившаяся программа просто уничтожается ядром и создается запись в журнале событий (можете глянуть на детали, там должна фигурировать библиотека KERNELBASE.dll).
С тем же успехом вы можете написать такой код:
C#
1
2
3
4
static void Main()
{
   throw new Exception();
}
Если это приложение типа Windows Forms, то оно закрашится "втихую", потому что ошибка просто не перейдет порог ядро/пользователь.

Если вам нужно отлавливать необработанные исключения, то подпишитесь в методе Main на обработку событий AppDomain.CurrentDomain.UnhandledExcepti on и Application.ThreadException.

По поводу "наездов" со стороны модераторов и других пользователей: возможно, вашу проблему просто не так поняли и решили, что вы спрашиваете о том, как отлавливать исключения. Если глянете другие темы, то увидите, тут еще и не такие вопросы задаются, так что не принимайте близко к сердцу - люди привыкли помогать студентам-двоечникам
5
213 / 139 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
27.03.2012, 23:26  [ТС]
kolorotur, спасибо за подробный ответ в точку на мой вопрос! Именно это меня и интересовало. Спасибо за подробное разъяснение!


Цитата Сообщение от kolorotur Посмотреть сообщение
Если вам нужно отлавливать необработанные исключения, то подпишитесь в методе Main на обработку событий AppDomain.CurrentDomain.UnhandledExcepti on и Application.ThreadException
да, об этом я уже сегодня днем читал) спасибо
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
27.03.2012, 23:28
не знаю как остальные, но я нигде не обнаружил подписки на глобальный перехват исключений
0
213 / 139 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
27.03.2012, 23:31  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
не знаю как остальные, но я нигде не обнаружил подписки на глобальный перехват исключений
nio, а вы все же продолжаете меня упрекать
Цитата Сообщение от Tolias28 Посмотреть сообщение
и по ходу тестирования кода решил попробовать, как будет работать мое приложение без глобального перехвата исключений, для чего решил его вручную сгенерировать такой строчкой кода, и т.д... бла-бла-бла...
Я подписку на глобальные исключения еще не делал. И это я выше писал. Я сперва хотел разобраться с вопросом (ответ на который я уже получил от уважаемого kolorotur), а потом уже браться за глобальные исключения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.03.2012, 23:31
Помогаю со студенческими работами здесь

Закрытие программы при возникновении исключения
Добрый вечер! Возник такой вопрос... Есть WinForms приложение работающее с файлом БД Access. При запуске программа в блоке try...

При возникновении исключения на Unique срабатывает счетчик id
Есть таблица, id - счетчик. В таблице есть поле "Номер", которое задано Unique. Если пытаюсь добавить строку с повторяющимся номером, то...

Запись в файл с откатом при возникновении ошибки/исключения
Добрый день! Такой вопрос: допустим идет построчная запись в файл 1000-чи строчек. Допустим на 501-ой вылетает исключение, стоит трай-кетч....

Windows 10 и студия 14 (обе enterprise) завершает отладку при возникновении исключения
Раньше была windows 8.1 enterprise, но 90 дневная лицензия кончилась, решил попробовать windows 10 enterprise. Поставил с веб-установщика...

Вылетает приложение при возникновении ошибки
Доброго всем времени суток! Вот есть приложение по работе с MySQL. Тему эту мы разобрали, и вроде все прекрасно. Одно маленькое...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru