Я читал, что мы должны ловить только те исключения, которые могут быть обработаны, что делает отлов базового класса исключений (в данном случае C #) плохой идеей (помимо других причин). В настоящее время я являюсь частью проекта, в котором до сих пор мне не удалось увидеть ничего, кроме базового исключения. Я упомянул, что это считается плохой практикой, но ответом было: «Эта служба должна работать 24 часа в сутки, 7 дней в неделю».
Поскольку у меня не было хорошего ответа о том, как правильно обрабатывать исключения в программе, которая должна работать 24/7, я сейчас здесь. Мне не удалось найти какую-либо информацию / предложения о том, как бороться с обработкой исключений в «критических» программах / службах, которые должны работать круглосуточно (и в этом случае я считаю, что это может быть нормально, если служба не работает в течение минуты или два, так что даже не критично). Я понимаю, что это зависит от точного характера программы. Требования к программе, которая может вызвать опасные для жизни проблемы, существенно отличаются от требований к сканеру журналов для онлайн-игры.
Два примера:
1: сервис опережающего ввода для клиентов Британских железных дорог, используемый при поиске в Интернете железнодорожных станций.
2: Программа, которая автоматически управляет переключателями для указанных выше железных дорог на основе информации в реальном времени, поступающей от различных датчиков на путях, поездах и т. Д.
Первая программа, вероятно, не вызовет серьезной проблемы, если она остановится на минуту или две, тогда как последняя может привести к человеческим жертвам. Предложения о том, как бороться с каждым? Указатель, где я могу найти больше информации и мыслей по этому вопросу?
catch Exception
. Это не означает, что ваша программа работает , это означает, что ошибки приводят к повреждению состояния приложения во время его выполнения, что является гораздо более опасным местом. Сбой программы может быть катастрофическим, но программа, которая находится в недопустимом состоянии, но все еще выполняет действия, может быть активно катастрофической.