|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.07.2018, 02:15 | #1 |
Спокойный псих
Участник клуба
Регистрация: 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. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Исключения | 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 |