Ich bin neu in Java und habe die Dokumentation zu Ausnahmen gelesen . und insbesondere die Seite " Ungeprüfte Ausnahmen - Die Kontroverse ".
Das Fazit lautet:
Wenn von einem Client vernünftigerweise erwartet werden kann, dass er sich von einer Ausnahme erholt, machen Sie ihn zu einer aktivierten Ausnahme. Wenn ein Client nichts tun kann, um die Ausnahme wiederherzustellen, machen Sie es zu einer nicht aktivierten Ausnahme.
Ich verstehe den Artikel nicht. Worum geht es bei „der Kontroverse“? Können Sie es in einfachen Worten erklären?
java
api-design
exceptions
ABcDexter
quelle
quelle
Antworten:
Ich werde Ihnen zuerst ein Beispiel geben (aber ganz am Ende ist die Antwort, warum die Kontroverse).
Nehmen wir an, Sie bearbeiten ein Dokument in einem Java-basierten Dokumenteditor und wählen anschließend Datei-> Speichern unter ... und speichern das Dokument auf einem Volume, für das Sie keine Schreibberechtigung haben. Der Editor würde nicht mit einem hässlichen Stacktrace auf Sie abstürzen, sondern Ihnen lediglich mitteilen, dass die Datei nicht gespeichert werden konnte, und Sie könnten die Bearbeitung fortsetzen und / oder an einem anderen Speicherort speichern.
In einem solchen Fall wurde wahrscheinlich eine geprüfte Ausnahme erwartet, abgefangen und gehandelt, um sich gnädig davon zu erholen.
Auf der anderen Seite setzen wir diese eine Division durch Null oder eine Nullzeigerausnahme voraus, die durch einen Programmierfehler verursacht wird, der seinen hässlichen Kopf nur unter bestimmten Bedingungen aufrichtet. Das kann überall im Code passieren, der RAM kann beschädigt sein usw. Kein API-Dokument würde Ihnen sagen, "diese Methode würde eine Division durch Null werfen, wenn der RAM beschädigt ist" .
Überprüfte Ausnahmen sollten Teil des Entwurfs sein und Benutzer dieser API sollten sich darauf vorbereiten, sie zu behandeln. Ungeprüfte Ausnahmen können fast überall auftreten und liegen außerhalb unserer Kontrolle.
Die Kontroverse entsteht durch Programmierer, die ungeprüfte Ausnahmen (von RuntimeException) verwenden, wenn sie geprüfte Ausnahmen verwenden sollten:
quelle
Auf dieser Seite gibt es keine Kontroversen. Es ist Oracle, das die Leute auffordert, geprüfte Ausnahmen zu verwenden.
Die gefälschte "Kontroverse", die sie hier erfunden haben, ist zwischen den Sprachdesignern und den Sprachnutzern. Die Designer erlaubten den Menschen, Dinge zu werfen und zu fangen, die (in ihren Gedanken) nicht geworfen oder gefangen werden sollten. Also erstellten sie eine Webseite, auf der sie sich über faule Entwickler beschwerten.
quelle