Czytałem, że powinniśmy wychwytywać tylko wyjątki, które można obsłużyć, co sprawia, że łapanie podstawowej klasy wyjątków (w tym przypadku C #) jest złym pomysłem (oprócz innych powodów). Obecnie jestem częścią projektu, w którym do tej pory nie widziałem niczego poza wychwyceniem podstawowego wyjątku. Wspomniałem, że uważa się to za złą praktykę, ale odpowiedź brzmiała: „Ta usługa musi działać 24 godziny na dobę, 7 dni w tygodniu, więc tak właśnie jest”.
Ponieważ nie otrzymałem dobrej odpowiedzi na to, jak poprawnie obsługiwać wyjątki w programie, który musi działać 24/7, jestem teraz tutaj. Nie udało mi się znaleźć żadnych informacji / sugestii dotyczących postępowania z wyjątkami w „krytycznych” programach / usługach, które muszą działać przez całą dobę (w tym przypadku uważam, że może być w porządku, jeśli usługa nie działa przez minutę lub dwa, więc nawet nie krytyczne). Rozumiem, że zależy to od dokładnej natury programu. Wymagania dotyczące programu, który może powodować problemy zagrażające życiu, są zupełnie inne w porównaniu do skanera dziennika dla gry online.
Dwa przykłady:
1: Usługa typu wyprzedzająca dla klientów kolei brytyjskiej, używana podczas wyszukiwania stacji kolejowych w Internecie.
2: Program, który automatycznie kontroluje przełączniki kolejowe dla powyższych kolei w oparciu o informacje w czasie rzeczywistym dostarczane z różnych czujników na torach, pociągach itp.
Pierwszy program prawdopodobnie nie spowodowałby poważnego problemu, gdyby upadł na minutę lub dwie, podczas gdy ten drugi mógłby spowodować ofiary wśród ludzi. Sugestie, jak sobie z tym poradzić? Wskaźnik do miejsca, w którym mogę znaleźć więcej informacji i przemyślenia na ten temat?
catch Exception
. To nie znaczy, że Twój program działa , oznacza to, że awarie powodują, że stan aplikacji ulega uszkodzeniu podczas działania, co jest znacznie bardziej niebezpiecznym miejscem. Awaria programu może być katastrofalna, ale program, który jest w nieprawidłowym stanie, ale nadal wykonuje działania, może być katastrofalnie aktywny .