LinkedList Exception abfangen

Status
Nicht offen für weitere Antworten.

che

Bekanntes Mitglied
Ich weiß, dass ich bei Strömen Exceptions abfangen muss. Ist ja auch verständlich, denn da kann immer mal was passieren, aber wie verhält es sich mit einer Liste? Ein bekannter behauptet, es müssten auch hier, wenn Objekte hizugefügt werden, Excepions abgefangen werden. Kann das jemand von euch bestätigen? Muss ich wirklich bei einer Liste Ausnahmen abfangen?
 
Nö musst Du nicht, Du kannst ohne Exceptionhandling Elemente zu dieser Liste hinzufügen. (Warum auch immer Du eine LinkedList brauchst?)
 
du musst dann Exceptions behandeln, wenn eine Methode eine Exception werfen kann...

Beim hinzufügen in eine Liste können Exceptions geworfen werden:

UnsupportedOperationException - if the add method is not supported by this list.
ClassCastException - if the class of the specified element prevents it from being added to this list.
NullPointerException - if the specified element is null and this list does not support null elements.
IllegalArgumentException - if some aspect of this element prevents it from being added to this list.

somit müsstest du GANZ streng genommen diese abfangen. Ich machs nicht... Wenn du natürlich argumentierst, dass jede Liste verwendet werdne kann, und du somit nciht weißt, ob diese Liste null elemente zulässt oder gar die add methode nicht erlaubt usw - dann ja
 
Also ich kann die Frage nur mit einem klarem 'Jein' beantworten.

1.) Also 'müssen' mußt Du keine Exceptions abfangen (was für eine Satzkonstruktion...)

2.) Hier ist das ABER an der ganze Sache: Je nachdem, welche Methoden Du benutzt, werden u.U. RuntimeExceptions geworfen. Diese mußt Du nicht abfangen, Du kannst Sie aber anfangen.
Ganz einfaches Beispiel: Wenn Du eine NullPointerException bekommst (weil die Collection halt "null ist") so könntest Du im catch-Block sagen, was er denn nun machen soll (z.B. eine gültige Liste anlegen oder eine Fehlermeldung an den Benutzer ausgeben).
 
deathbyaclown hat gesagt.:
somit müsstest du GANZ streng genommen diese abfangen.

Naja, also ganz Streng genommen musst Du sie halt nicht abfangen:

RuntimeException hat gesagt.:
RuntimeException is the superclass of those exceptions that can be thrown during the normal operation of the Java Virtual Machine.

A method is not required to declare in its throws clause any subclasses of RuntimeException that might be thrown during the execution of the method but not caught.
 
:shock: Wusste ja nicht, dass die Sache doch einen Haken hat. Na ja, ich werde in Zukunft auch keine Exceptions abfangen, da ich von Natur aus ein fauler Mensch bin 8)
 
oh, nicht so schnell junger Programmierer ;-)

Die unterscheidung bezieht sich auf Exceptions und RuntimeExceptions. Bei ersteren wirst du gezwungen sie abzufangen oder weiterzugeben - du kannst (und solltest) ie nicht ignorieren...

Ein gutes Exception Handling hilft in einem Programm immens
 
Guck dir mal diesen Artikel an, dort wird erklärt wie man effektiv Exceptions einsetzt.

Dieses Thema wird in den meisten Büchern kaum behandelt, obwohl man sich sehr viel Arbeit damit ersparen kann.
 
mein Senf dazu (Achtung: nicht wirklich ausgereift, und auch die Java-API ist teilweise nicht ganz konsistent):


* RuntimeException (müssen NICHT mit try-catch-finally behandelt werden) nur dann verwenden, wenn sich der Aufrufer auf keinen Fall von der "Fehler Situation" erholen kann, also wird ggf. Absturz der JVM entstehen.

vor allem innerhalb eines Pakets (bei "package scope" Methoden) zusammen mit asserts verwenden, um Programmierfehler zu finden

WICHTIG: In die Doku damit!

* Exception (müssen mit try-catch-finally "abgefangen" werden)

Immer dann, wenn sich der Aufrufer irgendwie doch erholen kann, also etwas gegen den Fehler tun kann/muss

Oft selber schreiben, damit der Aufrufer genau weiss, was schief gegangen ist

vor allem bei Public Methoden, die von anderen Proggern aufgerufen werden und die eventuell "ungültige und falsche" Parameter übergeben


Merkregel: eine Nullpointerexception aktiv (mit throw) in einer public methode zu werfen ist völliger Unsinn; kein externer Programmierer würde sie jemals abfangen...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben