In den meisten Fällen ist es möglich, Ausnahmen in Java abzufangen, auch solche, die nicht überprüft werden. Es ist jedoch nicht unbedingt möglich, etwas dagegen zu tun (z. B. nicht genügend Speicher).Wann sollte man eine Anwendung wegen einer Ausnahme in Java abstürzen lassen (Design-Problem)?
In anderen Fällen ist das Problem, das ich versuche zu lösen, ein Konstruktionsprinzip. Ich versuche, ein Designprinzip oder ein Regelwerk aufzustellen, das angibt, wann man eine Ausnahmesituation aufgeben sollte, selbst wenn sie rechtzeitig erkannt wird. Das Ziel ist, die Anwendung so wenig wie möglich zum Absturz zu bringen.
Hat jemand schon Brainstorming und kommuniziert darüber? Ich suche nach spezifischen generischen Fällen und möglichen Lösungen oder Daumenregeln.
UPDATE
Vorschläge bisher:
- Stopp zu laufen, wenn die Datenkohärenz beeinträchtigt werden kann
- Stopp ausgeführt wird, wenn Daten gelöscht werden können
- Stopp laufen, wenn Sie nicht tun können, alles darüber (Nicht genügend Arbeitsspeicher ...)
Stoppen Sie, wenn der Schlüssel-Service nicht verfügbar ist oder Beco mes nicht verfügbar und kann nicht
Verfahren/Dienst neu gestartet werden sollte prüfen, ob es seine Pflicht, von einem stabilen Zustand durchführen können, wenn nicht, sollten sie den Benutzer darüber informieren (log) und nichts
- tun Wenn die Anwendung beendet werden muss degradieren so anmutig wie möglich
- Verwendung Rollbacks in db Transaktionen
- Customized Ausnahmen verwendet werden können, Tipps zu geben, wie die Situation von Handler, wie Sie
- Log so viele relevante Informationen lösen können
- Benachrichtigen Sie den Entwickler
Zustand und die Datenkohärenz so viel erhalten, wie Sie können
Quick Fixes schädlich sein kann, wenn das Debuggen, besser die Anwendung abstürzen lassen und in Einzelheiten analysieren, was es verursacht
Wenn Ihre Anwendung wichtig ist (zum Beispiel der Server, der eine Anlage steuert), muss Ihre Anwendung 1) den Typ anrufen, der sie reparieren muss 2) so lange laufen, wie es sicher nicht alles löscht (Datenkohärenz kann fast nie sein kompromittiert). –
Im Idealfall sollte Ihre Anwendung niemals abstürzen. Ihre Anwendung sollte jedoch ordnungsgemäß fehlschlagen, wenn eine Komponente wie eine Datenbank oder eine Kamera fehlt oder nicht erreichbar ist. –
Ich hätte gedacht, dass Sie für eine Menge seriöser RuntimeExceptions keine Wahl haben, ob Sie es abstürzen lassen, es sei denn, Sie wickeln das sehr öffnende Bit in einem try ... catch-Block. –