2016-08-09 65 views
-2

Es wird klar gesagt, dass unkontrollierte Ausnahmen nicht gefangen werden sollen, wo immer ich darüber lese. Wenn jedoch eine Eingabe benötigt wird, hat sie jeder in jedem Code, den ich gesehen habe, gefangen.Fängt InputMismatchException nicht falsch ein?

Wenn man bedenkt, dass es eine unkontrollierte Ausnahme ist, wie würden Sie damit umgehen? Würdest du das überhaupt verhindern? Warum folgt niemand der Praxis?

+1

Was ist Ihre Frage? Ist es * Warum fangen Leute eine ungeprüfte Ausnahme, wenn Sie lesen, dass Sie nicht sollen? * (Auch, verbinden Sie bitte zu, wo Sie das lesen, und Sie können sich auf http://stackoverflow.com/a/13251421/1743880 beziehen) oder ist es * Wie behandeln Sie ungültige Eingabe * (und dafür, siehe http://stackoverflow.com/questions/3059333/validating-input-using-java-util-scanner)? Das sind 2 verschiedene Fragen (und beide wurden vorher gefragt) – Tunaki

+0

Wo hast du das gelesen? Die ungeprüfte Ausnahme ist nicht immer das Ergebnis eines Programmierfehlers. Es ist subtiler und hängt von der Ausnahme ab. Bitte beachten Sie http://StackOverFlow.com/questions/13251368/should-unched-exceptions-be-caught-and-dealt-with – Tunaki

Antwort

1

Es wird klargestellt, dass unkontrollierte Ausnahmen sind nicht gefangen soll

Es ist nicht wahr, dass Sie sollten nie ungeprüfte Ausnahme fangen.

Wenn Sie Ausnahme in angemessener Weise behandeln können, sollten Sie fangen. Zum Beispiel können Sie fangen NumberFormatException (das ist unchecked Ausnahme) und Message-Box für Benutzer anzeigen, dass die Eingabe falsch ist.

Auf der anderen Seite sollten Sie keine Exceptions abfangen, die schwer/nicht wiederherstellbar sind. In diesem Fall besteht die beste Strategie darin, die Anwendung zu beenden.

Sie sollten auch nie Fehler (wie zum Beispiel OutOfMemoryError) außer seltenen cases fangen.

+0

Sie sind am Punkt;) – Enzokie

+1

'OutOfMemoryError' ist keine' Exception', es ist ein "Fehler". Beide haben eine gemeinsame Superklasse 'Throwable'. Sie sollten niemals nur 'Throwable' oder' Error' (oder irgendeine seiner Unterklassen) fangen. –