Zunächst müssen Sie, wie bei jedem anderen Programmierparadigma, alles richtig machen, damit es funktioniert.
Für mich ist der Vorteil von geprüften Ausnahmen , dass die Autoren der Java - Laufzeitbibliothek haben für mich schon entschieden , welche gemeinsame Probleme könnte ich vernünftigerweise in der Lage sein zu erwarten, bei der Handhabung Aufruf Punkt (im Gegensatz zu einem Top-Level - catch-Print- gegen Block) und überlegen Sie so früh wie möglich, wie mit diesen Problemen umgegangen werden soll.
Ich mag geprüfte Ausnahmen, weil sie meinen Code robuster machen, indem sie mich dazu zwingen, so früh wie möglich über eine Fehlerbehebung nachzudenken.
Um genauer zu sein, macht dies meinen Code robuster, da ich gezwungen bin, sehr früh im Prozess seltsame Eckfälle zu berücksichtigen, anstatt zu sagen, dass "Hoppla, mein Code nicht funktioniert, wenn die Datei noch nicht existiert" ein Fehler in der Produktion, den Sie dann Ihren Code überarbeiten müssen, um zu behandeln. Das Hinzufügen von Fehlerbehandlung zu vorhandenem Code kann eine nicht triviale und daher teure Aufgabe sein, wenn die Wartung erreicht wird, anstatt dies von Anfang an zu tun.
Es kann sein, dass die fehlende Datei eine fatale Sache ist und das Programm in Flammen zum Absturz bringen sollte, aber dann treffen Sie diese Entscheidung mit
} catch (FileNotFoundException e) {
throw new RuntimeException("Important file not present", e);
}
Dies zeigt auch einen sehr wichtigen Nebeneffekt. Wenn Sie eine Ausnahme umbrechen, können Sie eine Erklärung hinzufügen, die in den Stack-Trace aufgenommen wird ! Dies ist äußerst leistungsfähig, da Sie Informationen hinzufügen können, z. B. den Namen der fehlenden Datei, die an diese Methode übergebenen Parameter oder andere Diagnoseinformationen, und diese Informationen direkt im Stack-Trace vorhanden sind, der häufig der einzige ist, den Sie verwenden erhalten, wenn ein Programm abgestürzt ist.
Die Leute mögen sagen, "wir können dies einfach im Debugger ausführen, um es zu reproduzieren", aber ich habe festgestellt, dass Produktionsfehler sehr häufig nicht später reproduziert werden können , und wir können keine Debugger in der Produktion ausführen, außer in sehr bösen Fällen, in denen im Wesentlichen Ihre Aufgabe auf dem Spiel steht.
Je mehr Informationen sich in Ihrem Stack-Trace befinden, desto besser. Überprüfte Ausnahmen helfen mir dabei, diese Informationen frühzeitig zu erhalten.
EDIT: Dies gilt auch für Bibliotheksdesigner. Eine Bibliothek, die ich täglich benutze, enthält viele, viele überprüfte Ausnahmen, die viel besser entworfen worden sein könnten, was die Verwendung weniger mühsam macht.