Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2014, 11:28   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию Обработка исключений

Тема не касается .NET, но касается C# и Visual Studio Ultimate 2013.

Довольно специфическая проблема:
В главном файле проекта Windows Forms (Program.cs) есть строка "Application.Run(new Form1());".
Эту строку я заключил в блок try.
Проблема заключается в том, что блок
Код:
catch (Exception error)
{
	// вывод инфы по ошибке
}
выполняется только во время отладки приложения.
Если же запустить программу вне отладчика и произойдёт исключение, необработанное внутри формы, то произойдёт крэш программы и "// вывод инфы по ошибке" просто не произойдёт, а исключение выпадет, как необработанное в принципе.
Что делать ?

Сразу отвечу на вопрос "Зачем мне обработчик вне формы ?": если кратко - то я просто не знаю, в каком месте программы может произойти ошибка, так как вся работа программы завязана на работе с внешними данными. И если набор внешних данных не соответствует тем, которые программа пытается обработать - вероятность возникновения ошибки большая.
По большому счёту я должен выяснять все возможные места, где может произойти ошибка, но таких мест в программе просто ОЧЕНЬ много, и тестировать всевозможные варианты подмены данных и прописывать поведение программы при выявлении каждого рода подмены - просто не целесообразно.
В моём случае лучше сделать обработку таких ошибок из ряда "необратимости", то есть программа не должна знать, является ли ошибка обратимой, а просто напросто вывести ошибку и закрыться.

Это только краткое описание причины моих действий.

Ещё раз вопрос: как сделать так, что бы во время выполнения программы вне отладчика выполнялся всем обработчикам обработчик исключений ???

---
Более подробное описание
---
Программа построена из нескольких форм, и код создания каждой формы выглядит примерно так:
Код:
try
{
	Form2 myform2=new Form2(/*параметры, где то есть, где то нет*/);
	myform2.Show();
}
catch (Exception error)
{
	throw new Exception("<имя формы, где произошла ошибка, здесь=>Form2; "+error.Message,error);
}
То есть, при возникновении исключения в любой из форм это исключение должно перехватываться и подниматься до самого верхнего обработчика try-catch (который находится в Program.cs), а там это исключение уже обрабатывается.
Но на практике получается, что всё вышеописанное выполняется только в отладчике, и программа корректно завершается, а если запускать программу вне отладчика - при возникновении исключения в конструкторе исключение выпадает необработанным уже в блоке
Код:
try
{
	Form2 myform2=new Form2(/*параметры, где то есть, где то нет*/);
	myform2.Show();
}
Если же исключение происходит во второй форме - оно там же и выпадает необработанным.
Ну и да: всё это проверено специально созданными ошибками в коде, и все "необработанные" исключения выпадают согласно тем ошибкам, которые были допущены.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 06.07.2014 в 11:43. Причина: Дополнительная информация
OmegaBerkut вне форума Ответить с цитированием
Старый 06.07.2014, 11:33   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

http://tech.pro/tutorial/668/csharp-...led-exceptions
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка исключений David Villa Общие вопросы C/C++ 3 03.03.2013 19:53
Обработка исключений с пoмощью структурированной обработки исключений Smart Visual C++ 3 01.11.2012 15:38
C# обработка исключений NeoX_2011 Помощь студентам 3 19.03.2012 01:04
Обработка исключений Ckomoroh Общие вопросы Delphi 6 21.03.2011 08:52
Обработка исключений try... except Kati Помощь студентам 5 07.03.2010 10:18