2017-08-21 10 views
-1

Ist es gut, UnsupportedOperation, , NullPointerException, ClassCastException von Collection#add() Methode in unserem Quellcode zu behandeln, während ein Element zu einer Sammlung mit add() Methode hinzufügen?Soll ich die Java RuntimeException behandeln?

+0

Es ist besser, den Code so zu schreiben, dass diese Dinge nicht passieren. Die von Ihnen aufgelisteten Fehler weisen im Allgemeinen auf Programmierfehler hin. – khelwood

+1

Willkommen bei Stack Overflow! Bitte nimm die [Tour], schau dich um und lies die [Hilfe] durch, insbesondere [* Wie stelle ich eine gute Frage? *] (/ Help/how-to-ask), [* Welche Arten von Fragen sollte ich vermeiden zu fragen? *] (/ help/dont-ask), und [* Welche Themen kann ich hier fragen? *] (/ help/on-topic) * "Viele gute Fragen erzeugen ein gewisses Maß an Meinungen basierend auf Experten-Erfahrung, aber Antworten auf diese Frage werden eher auf Meinungen basieren, als auf Fakten, Referenzen oder spezifische Expertise. "* –

Antwort

1

Nein, Sie sollten Ihren Code schreiben, damit Sie wissen, dass sie nicht auftreten werden. I.e. nicht versuchen, nicht änderbare Sammlungen zu modifizieren, da dies UnsupportedOperationException usw. ergibt

Außerdem, wie würdest du sie überhaupt behandeln?

+0

Danke :). Nach dem Design-Geruch gibt es ein Thema namens "Rebellious Hierarchy", wo es heißt, dass wir die Ausnahme behandeln müssen, wenn ein Objekt wie dieses erstellt: Liste strList = new ArrayList <>(); Unten ist der Link http://www.jot.fm/issues/issue_2013_06/article1.pdf Im obigen Link Abschnitt 5.4.6 –

1

Das hängt davon ab, was Sie mit "Handle" meinen.

Sie sollten auf jeden Fall diese Ausnahmen irgendwo in Ihrer Anwendung, nicht unbedingt in der Nähe der Collection.add() Anruf protokollieren. Einige Top-Level-Wrapper könnten der bessere Ort sein.

Wenn Sie jedoch diese Ausnahmen (oder eine andere Ausnahme) abfangen, fragen Sie sich: "Kann ich von hier normal weitermachen, obwohl add() nicht erfolgreich war?". Aus meiner Erfahrung können Sie in den meisten Fällen nicht - Sie fügen das Element hinzu, da dies der Algorithmus ist, der benötigt wird, um Fehler zu erzeugen oder falsche Ergebnisse zu erzielen. Sie möchten also Ihrem Anrufer mitteilen, dass Sie Ihre Aufgabe nicht erfüllen können, und das bedeutet, dass Sie eine Ausnahme auslösen können, oder einfacher, die Ausnahme an Ihren Anrufer weiterleiten zu lassen.

Nur, Sie möchten nicht, dass Ihre gesamte Anwendung wegen eines lokalen Programmierfehlers zum Stillstand kommt, also ist ein Wrapper um Top-Level-Menüfunktionen, Serviceanforderungen oder ähnliches sinnvoll, alle Throwables abfangen und protokollieren Informieren des Benutzers und Bringen der Anwendung in einen Zustand zum Akzeptieren des nächsten Befehls/der nächsten Anfrage (falls dies nicht automatisch geschieht).

So produziert der faulste Programmierer oft den robustesten Code (Ausnahme), weil er nie unnötige Fangklauseln einführen wird.

Verwandte Themen