P9: Primzahlen und andere ungenaue Informationen

Benutzeravatar
R|ng0
Mausschubser
Mausschubser
Beiträge: 71
Registriert: 24. Dez 2006 19:17

Beitrag von R|ng0 »

... bla bla IllegalArgumentException bla bla ...
Die ganze Zeit als beide Exception zu werfen waren, habt ihr euch beschwert, "ja was muss jetzt geworfen werden" etc. ...
Jetzt haben Sie es einheitlich gemacht und es gibt wieder zu meckern.

Der erste Vorteil ist natürlich, dass 100% klar, was für eine Exception geworfen werden muss!
Der ganz klare Vorteil von IllegalArgumentException für die Veranstalter liegt auf der Hand:
Man MUSS an alles denken! Man kann sich nicht darauf verlassen, dass die NullPointerException automatisch geworfen wird, wenn der Pointer null ist!

Und was man nun werfen muss ist vollkommen egal, es geht in den Praktika doch darum, dass Schwachstellen erkannt werden und man lernt auf solche Detail zu achten!

yourmaninamsterdam
Nerd
Nerd
Beiträge: 681
Registriert: 26. Okt 2006 14:04
Kontaktdaten:

Beitrag von yourmaninamsterdam »

IllegalArgument ist auf jeden Fall eher angebracht. Eine NullPointerException besagt, dass du versucht hast, an Null irgendwas aufzurufen. Wenn das passiert, dann passiert das von selbst aus. Kein Grund, es selbst zu machen.
Null-Werte können als Parameter ja durchaus erlaubt sein. Wenn sie es nicht sind, dann sind IllegalArguments.

Ich muss aber allen hier widersprechen, die sich beschweren, dass nicht jeder Fall angegeben worden ist, wo IllegalArgument gefordert ist.
Wenn die Eingabedaten Blödsinn sind, dann muss man sie halt abfangen.
Es ist einerseits Definitionssache, dass man negative Zahlen irgendwo nicht annimmt (weil sie nie zum Ergebnis führen würden), es gibt aber andere inhaltlich absurde Fälle, wo man aus Eigeninitiative handeln sollte. Man soll hier selber denken und nich für sich denken lassen.

Und nein, negative Längen sind nicht sinnvoll für Listen.

HolgerF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 263
Registriert: 16. Jan 2007 14:20
Kontaktdaten:

Beitrag von HolgerF »

IllegalArgument ist auf jeden Fall eher angebracht. Eine NullPointerException besagt, dass du versucht hast, an Null irgendwas aufzurufen. Wenn das passiert, dann passiert das von selbst aus. Kein Grund, es selbst zu machen.
Null-Werte können als Parameter ja durchaus erlaubt sein. Wenn sie es nicht sind, dann sind IllegalArguments.
Das hieße aber, da Java keine Trennung zwischen Referenzen und Pointern trifft, dass man nach dieser Sichtweise in praktisch jeder (public) Funktion, die man schreibt, eine Abfrage auf null aller nicht-primitiven übergebenen Parameter machen müsste. Das kann in meinen Augen unmöglich Sinn der Sache sein. Was man so häufig braucht, sollte automatisiert sein, und genau das tut Java ja auch normalerweise. Lediglich, wenn man einen Wert erstmal nur zwischenspeichert und erst später benutzt, muss man aufpassen.

Hm, wenn ich's mir recht überlege, gefällt mir das ganze Konzept nicht, dass null überhaupt übergeben werden kann, wo ein Parameter nicht ausdrücklich als optional gewünscht ist...

Benutzeravatar
mnoll
Mausschubser
Mausschubser
Beiträge: 44
Registriert: 17. Jul 2006 23:03

Beitrag von mnoll »

Juhu endlich alle Sachen richtig abgefangen. Bin mal gespannt ob das mit dem 1 =!= prim noch geändert wird und man nochmal durchlaufen lassen muss.

yourmaninamsterdam
Nerd
Nerd
Beiträge: 681
Registriert: 26. Okt 2006 14:04
Kontaktdaten:

Beitrag von yourmaninamsterdam »

Ich muss zugeben, in den Java-Klassen wird bei unerwünschten Null-Argumenten NullPointerException geworfen.
Wie gesagt, ich kannte das mit IllegalArgument.
Letztenendes ist mir aber beides recht... :)

HolgerF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 263
Registriert: 16. Jan 2007 14:20
Kontaktdaten:

Beitrag von HolgerF »

Hm egal, lassen wir das. War ohnehin kleinlich von mir, es überhaupt aufzukochen, sorry.

Kommen wir lieber zum eigentlichen Thema zurück, namentlich, dass 1 keine Primzahl ist. Ich hab angesichts der Befunde hier meine Version spaßeshalber mit 1 als "Primzahl" hochgeladen und bin damit passed, aber das kann ja nicht ganz Sinn der Sache sein.

wach
Computerversteher
Computerversteher
Beiträge: 323
Registriert: 25. Okt 2004 09:08

Beitrag von wach »

mnoll hat geschrieben:Juhu endlich alle Sachen richtig abgefangen. Bin mal gespannt ob das mit dem 1 =!= prim noch geändert wird und man nochmal durchlaufen lassen muss.
Keine einzige Einreichung sollte deswegen nicht bestanden haben. Das wurde sofort als die Mail kam behoben und alle Tests liefen danach nocheinmal durch.

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

was ist denn eigentlich wenn eine negative zahl für initialSize übergeben wird? IllegalArgumentException oder die nächste Primzahl finden, was dann wohl die 2 wäre?

HolgerF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 263
Registriert: 16. Jan 2007 14:20
Kontaktdaten:

Beitrag von HolgerF »

initialSize < 1 => IllegalArgument

Antworten

Zurück zu „Archiv“