Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для maxkoshevoi
74 / 74 / 23
Регистрация: 07.11.2013
Сообщений: 539

Обработчик ошибок для всего проекта

21.12.2014, 22:53. Показов 2407. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как создать обработчик ошибок для всего проекта? Ну, то есть, можно создать спецальную форму, которая будет выскакивать при возникновении ошибки. Нужно чтобы
• Она выскакивала при возникновении ошибки
• Записывала в лог форму и строчку на которой произошла ошибка
• И желательно значения переменных в той форме или только подпрограмме,в которой возникла ошибка
Заранее огромное спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.12.2014, 22:53
Ответы с готовыми решениями:

Переменные для всего проекта
Делаю приложение на основе БД! Несколько форм этого приложения работают с одними и теми же данными из этой базы. Хотелось бы при запуске...

Создание единого подключения для всего проекта
Здравствуйте. Нужна небольшая помощь. Имеется БД (SQLite). Раньше я перед каждым действием с БД создавал соединение, получал нужные...

Почему когда я вешаю обработчик события на ячейку и этот обработчик срабатывает, то оказывается, он сработал совершенно для ДРУГОЙ ячейки?
Да, почему? Скропаем DataGridView; кинем на форму listBox2 и listBox1 и напишем такой обработчик для события EditingControlShowing...

9
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
22.12.2014, 02:29
Цитата Сообщение от maxkoshevoi Посмотреть сообщение
Как создать обработчик ошибок для всего проекта?
обрабатывать ошибки везде, то есть везде ставить необходимые блоки try catch,
создать класс журнала ошибок, создать свой форму которая будет в случае ошибки выводится на экран с сообщением ошибки
0
 Аватар для maxkoshevoi
74 / 74 / 23
Регистрация: 07.11.2013
Сообщений: 539
22.12.2014, 15:23  [ТС]
Цитата Сообщение от Metall_Version Посмотреть сообщение
ставить необходимые блоки try catch
Я знаю, например, можно поставить этот блок в Program.cs и он, по идее, должен отлавливать все ошибки проекта. Но я не знаю, как тогда определить, в какой форме произошло и тем более, как узнать значения переменных. Или вы предлагаете составить такой блок отдельно в каждой подпрограмме, где ошибка может возникнуть вероятнее всего? Тогда отдельно для каждого частного случая легко будет прописать необходимые переменные для сохранения, то это будет довольно долго. + Я слышал, что такие блоки сильно влияют на скорость работы программы, насколько такое решение может сказаться на производительности?
0
311 / 309 / 125
Регистрация: 29.01.2013
Сообщений: 638
Записей в блоге: 1
22.12.2014, 15:36
У класса Exception есть свойство StackTrace, которое представляет собой строку с цепочкой вызовов методов, где произошло исключение.
1
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
22.12.2014, 17:09
Цитата Сообщение от maxkoshevoi Посмотреть сообщение
Или вы предлагаете составить такой блок отдельно в каждой подпрограмме
конечно, везде где есть вероятность, нужно ставить трайкатч
методы нижнего уровня отлавливают експшен и передают его наверх, путем повторного генерирования
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
22.12.2014, 17:09
Цитата Сообщение от maxkoshevoi Посмотреть сообщение
можно поставить этот блок в Program.cs и он, по идее, должен отлавливать все ошибки проекта.
Ну да... Попробуйте таким вот образом отловить исключения в других потоках...
0
 Аватар для maxkoshevoi
74 / 74 / 23
Регистрация: 07.11.2013
Сообщений: 539
22.12.2014, 18:48  [ТС]
insite2012, а каждая новая форма открывается в новом потоке?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
22.12.2014, 18:51
Цитата Сообщение от maxkoshevoi Посмотреть сообщение
каждая новая форма открывается в новом потоке?
По умолчанию, насколько я знаю - нет. WinForms вообще сама по себе однопотоковая модель.
0
 Аватар для maxkoshevoi
74 / 74 / 23
Регистрация: 07.11.2013
Сообщений: 539
22.12.2014, 18:53  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
WinForms вообще сама по себе однопотоковая модель.
тогда это должно сработать =)
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
23.12.2014, 14:09
Имба:
C#
1
2
3
4
5
6
7
8
9
10
void TryExecute(Action action, params object[] values){
try { action(); }
catch(Exception ex)
{
// окно с ошибкой
MessageBox.Show(ex.Message, ex.GetType().ToString());
// как логировать ошибки, уже сами напишете
LogError(ex, values);
}
}
применение
C#
1
2
3
4
5
private void Button1_Click(object sender, EventArgs e)
{
var fileName = textBox1.Text;
TryExecute(()=> textBox2.Text = File.ReadAllText(fileName), fileName);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.12.2014, 14:09
Помогаю со студенческими работами здесь

Запустить определенную форму первой при запуске всего проекта
Как сделать что бы определенная форма запускалась первой при запуске всего проекта?

Универсальный обработчик ошибок для VBA
Спасибо что обратили внимание на тему. В общем, нужно сделать 10 лаб, за 2 дня, к каждому приклеить обработчик ошибок. Решил начать с...

Константы для всего проекта
Здравствуйте. Можно ли как нить объявить константы для всего проекта,не в классе. Или vb.net так нельзя? чистый ООП?

Диаграмма классов для всего проекта
Проект состоит из нескольких решений эти решения взаимодействуют между собой можно ли построить автоматически диаграмму классов со...

Глобальный HINSTANCE для всего проекта
Здравствуйте. Помогите решить проблему :) Думаю, по ходу решения всплывет мое непонимание какого-то аспекта структуры программы, по этому...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru