Frage von maryem123, 54

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 ?

Antwort
von triopasi, 38

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.

Expertenantwort
von KnusperPudding, Community-Experte für Java, 16

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.

Kommentar von maryem123 ,

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 ) 

Kommentar von KnusperPudding ,

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.

Antwort
von TeeTier, 12

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. :)

Kommentar von maryem123 ,

habe ich es gehoert ;) ,, danke fuer die Hilfe 

Antwort
von DreiGegengifts, 31

Einfach den Try und Catch Block innerhalb des For Blocks schreiben. Dann kannst du den Fehler abfangen und danach weitermachen mit der Schleife.

Kommentar von triopasi ,

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.

Kommentar von maryem123 ,

@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

Kommentar von maryem123 ,

@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  , 

Kommentar von DreiGegengifts ,

@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.

Kommentar von 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

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.

Kommentar von maryem123 ,

ich versuche es wie du gesagt hast einmal ,, danke ;D 

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten