Я читав, що ми повинні виловлювати лише винятки, які можна обробити, що робить вилов базового класу винятків (C # в даному випадку) поганою ідеєю (крім інших причин). Зараз я є частиною проекту, в якому я поки що ще нічого не бачив, окрім базового винятку. Я згадував, що вважати це поганою практикою, але відповідь була "Цю службу потрібно працювати 24/7, тож саме так".
Оскільки у мене не було хорошої відповіді щодо того, як правильно поводитися з винятками в програмі, яка потребує запуску 24/7, я зараз тут. Мені не вдалося знайти будь-якої інформації / пропозицій, як боротися з обробкою виключень у "критичних" програмах / службах, які потрібно працювати цілодобово (і в цьому випадку я вважаю, що це може бути нормально, якщо послуга зникла на хвилину або два, так що навіть не критично). Я розумію, це залежить від конкретного характеру програми. Вимоги до програми, яка може спричинити загрозу життю, зовсім інші, порівняно зі сканером журналів для онлайн-ігор.
Два приклади:
1: Попередня послуга для клієнтів британських залізниць, яка використовується під час пошуку в мережі Інтернет залізничних станцій.
2: Програма, яка автоматично управляє залізничними комутаторами для вищезазначених залізниць на основі інформації в реальному часі, що надається різними датчиками в коліях, поїздах тощо.
Перша програма, ймовірно, не спричинила б серйозних проблем, якби вона знизилася на хвилину-дві, оскільки остання може спричинити людські жертви. Пропозиції, як поводитися з кожним? Вкажіть, де я можу знайти більше інформації та думок з цього питання?
catch Exception
. Це не означає, що ваша програма працює , це означає, що збої дозволяють пошкодити стан програми, поки вона продовжує виконуватись, набагато небезпечніше місце. Збита програма може бути згубною, але програма, яка знаходиться в недійсному стані, але все ще виконує дії, може бути активно згубною.