hallo wenn man exception in for schleife hat und will man nach dem uberpringen in Catch exception noch mal die Schleife laufen lassen , wie kann es machen ?
![code - (Informatik, Java)](https://images.gutefrage.net/media/fragen/bilder/hallo-wenn-man--exception-in-for-schleife-hat-und-will-man-nach-dem-uberpringen-in-catch-exception-noch-mal-die-schleife-laufen-60582914/0_big.jpg?v=1466447700000)
4 Antworten
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
Dann schreib es so, dass es garnicht zur Exception kommt. Das sieht bei dir nämlich eher danach aus, dass da viele Fehler kommen und anstatt die Ursache zu bekämpfen wird einfach mittels catch die Folge verhindert.
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
durch auslagern in eine weitere Methode.
void durchlaufeSchleife() { for (...) { ... } }
void calculate() { try { durchlaufeSchleife(); } catch (ArrayIndexOutOfBoundsException e) { durchlaufeSchleife(); } }
Aber du solltest beim durchlaufen eher dafür sorgen dass es zu keiner Exception kommt. z.B. in dem du per Bedingung abfrägst was der höchstmögliche wert ist.
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
wird die scheife nicht mit den letzten Indizen , wo ich aufgehoert habe weiter machen
Genau das führte zu einem Fehler.
Angenommen deine Array wird mit einer Größe von 10 definiert. So kannst du nur den Index von 0-9 ansprechen. Wenn nun eine Array-Out-Of-Bounds-Exception bekommst, heißt das, dass du auf einen Index Größer 9 zugreifst.
In deinem Falle dann 10. Entsprechend wird dann aber wenn du weiter machst, auch 11 schief gehen aus genanntem Grund.
![](https://images.gutefrage.net/media/default/user/0_nmmslarge.png?v=1438863662000)
Wow ... for-for-if-try-for-for ... eine tiefere Schachtelung war wohl nicht mehr möglich, oder? :)
Ich habe mal gehört, dass Java auch die Möglichkeit bieten soll, eigene Methoden definieren zu können. Solltest du mal ausprobieren. :)
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/DreiGegengifts/1662124779667_nmmslarge__0_0_512_512_d0d8c4156c0806032a429d80fed1cb83.png?v=1662124780000)
Einfach den Try und Catch Block innerhalb des For Blocks schreiben. Dann kannst du den Fehler abfangen und danach weitermachen mit der Schleife.
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
Geht schon, finde aber das ist eher Wirkung als Ursache bekämpft. Ich glaube da sollte man mehr Arbeit reinstecken und die Ursache mal suchen und den Fehler ganz verhindern.
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
@DreiGegengifts
eigentlich geht es nicht wenn ich beide vertauchen , da ich weiss wirklich wo ein Fehler tretten wird , zb fur i=0, j=0 , aber das problem dass wenn ich nicht in Randen von meiner matrix geht es richtig wenn ich in Randen , soll es einen Fehler geben
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
@triopasi , meine ursprungliche Code war viel langer und ausfuhrlich und es kann sein dass ich die methode mit switch case schreiben soll aber das wird langerer deswegen will ich am besten mit dem hier loesen ,
![](https://images.gutefrage.net/media/user/DreiGegengifts/1662124779667_nmmslarge__0_0_512_512_d0d8c4156c0806032a429d80fed1cb83.png?v=1662124780000)
@t würde ich jetzt nicht unbedingt sagen. Die Methode läuft ein Rechteck ab und macht für jedes Feldstück eine Prüfung. Wenn die wahr ist greift sie auf die Nachbarfelder zu. Die können natürlich je nach Position nicht vorhanden sein.
Die Frage ist vielleicht, warum über diese Felder so wenig Informationen existieren.
![](https://images.gutefrage.net/media/user/DreiGegengifts/1662124779667_nmmslarge__0_0_512_512_d0d8c4156c0806032a429d80fed1cb83.png?v=1662124780000)
eigentlich geht es nicht wenn ich beide vertauchen , da ich weiss
wirklich wo ein Fehler tretten wird , zb fur i=0, j=0 , aber das problem dass wenn ich nicht in Randen von meiner matrix geht es richtig wenn ich in Randen , soll es einen Fehler geben
Ich verstehe nicht ganz was du schreibst.
Aber um die Ränder abzuprüfen musst du es gar nicht zu einer Exception kommen lassen.
Aber wie gesagt: Wenn du das mit einer Exception machen willst, dann schreib sie in die for-Schleife, wenn du danach weitermachen willst.
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
ich versuche es wie du gesagt hast einmal ,, danke ;D
habe ich es verstanden , aber ist es nicht so , dass wenn man erneut die methode durchlaufeschleife abfragt , wird die scheife nicht mit den letzten Indizen , wo ich aufgehoert habe weiter machen , sondern erneut die ganz schleife ?! ( dankee diiir )