IllegalStateException statt UnsupportedOperationException?!

Status
Nicht offen für weitere Antworten.

mKz

Mitglied
Morgen :)
Ich bräuchte mal wieder eure Hilfe :p
Wir sollten eine Primfaktorenzerlegung rekursiv implementieren und dazu eine Testklasse schreiben.
Jetzt habe ich folgendes Problem: Meine Klasse implementiert das Interface Iterable. Die habe ich nicht neu definiert, sondern einfach den List-Iterator genommen, allerdings soll bei der Methode public void remove() eine UnsupportedOperationException geworfen werden. Das würde dann bei mir so aussehen:
Code:
    public void remove() throws UnsupportedOperationException
    {
        throw new UnsupportedOperationException();
    }

Bei meinem JUnit-Test wird allerdings immer eine IllegalStateException bei "have.iterator().remove();" (have ist eine Collection(ArrayList), in die die Primfaktoren geschrieben werden) geworfen :/

Ich hoffe ihr könnt mir helfen :)
 
S

SlaterB

Gast
du kannst um den entsprechenden Java-Code ein try/catch bauen und dir die Exception anschauen,
du kannst vergleichsweise an einer völlig anderen Stelle eine UnsupportedOperationException werden

wenn JUnit daraus intern letztlich was anderes macht, dann hast du darauf vielleicht keinen Einfluss,
aber genaueres weiß ich nicht
 

0din

Bekanntes Mitglied
scheuch dein prog doch mal im debug modus durch die gegend
warscheinlich wird der fehler nämlich nicht an der stelle geworfen sondern du hast irgendwo anders den wurm drin
 

mKz

Mitglied
habe ich schon SlaterB, die falsche Exception wird genau bei "have.iterator().remove();" geworfen :(
 
S

SlaterB

Gast
> Bei meinem JUnit-Test wird allerdings immer eine IllegalStateException bei "have.iterator().remove();" (have ist eine Collection(ArrayList),

die iterator()-Methode von ArrayList bzw. der dort zurückgegebene Iterator ist entscheidend, und der wirft IllegalStateException,

noch mal von vorne bzw. bisher gabs nur falsche Tipps, auch von mir:
warum sollte der Aufruf ArrayList.iterator().remove(); etwas mit einer von dir programmierten remove()-Methode zu tun haben,
wo ist der Zusammenhang?
 

mKz

Mitglied
Nun, ich sollte die Iterator-Methode remove() neu definieren (damit sie bei jedem Aufruf eine UnsuspportedOperationException wirft). Nun möchte ich dies einfach testen. Funktioniert aber leider nicht :/
 
S

SlaterB

Gast
WIE möchtest du sie neu definieren und wie testest du?

eine denkbare Variante wäre, statt ArrayList eine eigene Klasse zu verwenden
(die vielleicht von ArrayList erbt und lediglich einen neuen Iterator zurückgibt)

einfach so sich was wüschen oder 'irgendwo' definieren hilft nicht unbedingt,
es braucht schon ein schlüssiges Konzept
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben