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

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

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

Восстановить пароль
Повторная активизация e-mail

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

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

Здравствуйте.
Сегодня я задался таким вот вопросом ...
Если в том же WinForms пытаться ловить исключения в точке входа в программу - Program.cs, static void main, Application.Run(new SuperPuperForm()), то на сколько это технически эффективно ?

Речь о таких ошибках, которые происходят "неизвестно где и почему", об этом дальше.

Помнится как то я так делал, но у меня с этим была интересная незадача: под отладчиком исключения перехватывались исправно, а вот вне отладчика - программа падала. Потом я не возвращался к этому вопросу.

Сейчас я сижу колдую (*) над программой, в которой сплошные вводы и выводы на внешние независимые от меня среды - отправка JSON на сервер, ожидания ответов, ну и тому подобные. Суть в том, что полно асинхрона.
Этого мне достаточно для того, что бы всевозможные подобные вводы и выводы держать под тотальным try-catch везде и повсюду; при этом, важно что бы каждая отдельная такая I/O операция контролировалась по отдельности - так повышается отказоустойчивость.

И при всём этом контроле я всё равно в итоге получил полноценное падение программы (пока что единственный случай), то есть скорее всего где то завтыкал повесить этот самый try-catch.
В качестве бонусов, программа работает в несколько потоков, а так же активно использует буфер обмена системы, и мютекс для синхронизации использования буфера из нескольких процессов (из разных директорий).

В итоге я подхожу к необходимости "охоты" за исключением, и чем ближе ко дну стека вызовов я нахожусь, тем разумеется лучше.

Подытожу вопрос: есть ли смысл ловить исключения из самого верхнего уровня вызовов, при работе в нескольких потоках ?

* сноска: подобные программы у меня более-менее доведены до ума ближе к концу их жизненного цикла, что является довольно плохим показателем, и скорее всего уже зависит от опыта.

UPD. Ну да, забыл добавить не для всех очевидное утверждение: мало того что исключение происходит по неизвестной причине, так оно ещё и несёт нерегулярный характер. То есть запустить программу под отладчиком, и ждать - не самый оптимальный вариант; в данном случае будет полезнее отследить обстоятельства, что тоже не всегда просто, ибо на условные 5000 вызовов "важного" характера такая ошибка произошла всего один раз.
Под важным характером я имею ввиду выполнение одной общей операции, которая выполняет кучу мелких повторяющихся но с разными данными.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 20.07.2018 в 02:31.
OmegaBerkut вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исключения KAMLS Общие вопросы C/C++ 23 27.08.2017 16:07
Исключения c# CROWN C# (си шарп) 3 21.12.2014 18:29
Игра "Охота" в паскале abc net vampir20096 Помощь студентам 0 06.05.2012 11:58
Исключения в Qt iukash Qt и кроссплатформенное программирование С/С++ 6 16.04.2011 18:54
Охота на Tab Reskov Общие вопросы C/C++ 7 24.12.2008 00:31