Ich habe mit Integer.parseInt()
bemerkt, dass Sie es nicht mit einem try catch einkreisen müssen oder dass die Methode eine Ausnahme auslösen kann, obwohl sie ein NumberFormatException
"wirft".
Warum muss ich das NumberFormatException
nicht explizit abfangen oder angeben, dass meine Methode es auslöst?
Weil das eine "Laufzeit" -Ausnahme ist.
RuntimeExceptions werden verwendet, um Programmierprobleme zu identifizieren (die ein guter Programmierer vermeiden könnte), während
Überprüfte Ausnahmen dienen zur Identifizierung von Umgebungsproblemen (die nicht vermieden werden konnten, egal wie gut Sie programmieren, ein Server ist zum Beispiel ausgefallen)
Sie können mehr über hier
lesenEs gibt tatsächlich drei Arten von Ausnahmen , nur eine davon sollte behandelt werden (die meiste Zeit)
Siehe Thinking in Java für eine gute Erklärung der Checked- und Unchecked-Ausnahmen.
Einige halten die Idee der geprüften Ausnahmen für ein gescheitertes Experiment. Zum Beispiel verwenden sowohl Spring als auch Hibernate ungeprüfte Ausnahmen und umhüllen oft geprüfte Ausnahmen in unkontrollierten Versionen.
NumberFormatException erweitert RuntimeException, Sie müssen nicht explizit alles behandeln, was von RuntimeException erbt.
Andere RuntimeExceptions sind Dinge wie NullPointerException und IndexOutOfBoundsException. Dies sind Dinge, die der Programmierer vermeiden kann, und diese Art von Ausnahmen zu versuchen / zu fangen, würde ziemlich überladenen Code erzeugen.
Nur ein kurzer Kommentar zu Toolkits Antwort.
Der Grund, warum die aktivierten Ausnahmen ein Problem sind, ist, dass sie zu Code wie diesem führen:
%Vor%Das ist der schlimmste Fall. Vor allem protokollieren sie nicht, dass sie die Ausnahme abfangen. Dies passiert sehr oft und wird fast durch sehr dumme checked Ausnahmen wie die auf Thread.sleep () ausgelöst, es wirft InterruptedException, die unbedingt abgefangen werden müssen, aber 99% der Zeit ist es dir egal, ob du eine hast oder nicht .
Im obigen Fall kommt hinzu, dass die Leute dazu neigen, einfach "Ausnahme" zu fangen, wenn mehr als einer geworfen wird. Das bedeutet, dass selbst wenn eine kritische ungeprüfte Ausnahme ausgelöst wird, diese abgefangen und ignoriert wird, sodass es praktisch unmöglich ist, das Problem zu finden.
Mehr als einmal war ich in Teams, die ungefähr einen Monat damit zubringen mussten, auf diese Weise verborgene Fehler ausfindig zu machen.
Es ist ein gutes Konzept, das schrecklich wird, wenn man hinzufügt, dass Menschen es sind, die es verantwortungsvoll umsetzen müssen.