W większości przypadków możliwe jest przechwytywanie wyjątków w Javie, nawet niezaznaczonych. Ale niekoniecznie można coś z tym zrobić (na przykład z pamięci).Kiedy należy pozwolić aplikacji na awarię z powodu wyjątku w języku Java (problem z projektowaniem)?
W innych przypadkach problem, który próbuję rozwiązać, jest zasadą jednego projektu. Próbuję ustanowić zasadę projektowania lub zbiór zasad wskazujących, kiedy należy zrezygnować z wyjątkowej sytuacji, nawet jeśli zostanie ona wykryta na czas. Celem jest nie załamanie aplikacji w jak największym stopniu.
Czy ktoś już burzy mózgów i komunikował się o tym? Szukam konkretnych ogólnych przypadków i możliwych rozwiązań lub reguł kciuka.
UPDATE
Sugestie dotąd:
- przestanie działać jeśli spójność danych może być zagrożona
- stop działa, jeśli dane mogą zostać usunięte
- stop działa, jeśli nie można zrobić cokolwiek na ten temat (Brak pamięci ...)
Zatrzymaj działanie, jeśli kluczowa usługa nie jest dostępna lub zostanie otwarta mes niedostępny i nie może być wznowiona
Metoda/usługa powinna sprawdzić, czy może on wykonywać swoje obowiązki ze stabilnym stanie, jeśli nie powinien poinformować użytkownika (log) i nic nie robić
- Jeśli aplikacja musi zostać zatrzymany , degradują jak wdzięcznie jako możliwe
- użytkowania cofanie w transakcjach db
- Indywidualne wyjątki mogą być stosowane, aby dać wskazówki, jak rozwiązać sytuację obsługi
- Log tyle istotnych informacji, jak można
- Zawiadom deweloperów
zachowania stanu i spójności danych, jak tylko może
Szybkie poprawki mogą być szkodliwe, gdy debugowanie, lepiej niech crash aplikacji i analizować szczegółowo, co spowodowało jej
Jeśli twoja aplikacja jest ważna (na przykład serwer pilotujący fabrykę) twoja aplikacja musi 1) zadzwonić do faceta, który będzie musiał to naprawić 2) uruchomić tak długo, jak na pewno nie usunie wszystkiego (spójność danych prawie nigdy nie będzie zagrożony). –
Najlepiej, aby Twoja aplikacja nigdy nie uległa awarii. Twoja aplikacja powinna jednak zakończyć się niepowodzeniem, gdy brakuje jakiegoś składnika, takiego jak baza danych lub aparatu, lub gdy jest on niedostępny. –
Pomyślałbym, że dla wielu poważnych Wyrażeń RuntimeException nie będziesz miał żadnego wyboru, czy pozwolić mu się zawiesić, chyba że otoczysz bardzo otwierający fragment kodu w bloku try ... catch. –