Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > Windows Forms
Регистрация

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

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

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

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

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

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

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

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

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исключения KAMLS Общие вопросы C/C++ 23 27.08.2017 17:07
Исключения c# CROWN C# (си шарп) 3 21.12.2014 19: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 01:31


10:27.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru