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)

4 Antworten

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.

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.


maryem123 
Beitragsersteller
 20.06.2016, 22:49

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 ) 

0
KnusperPudding  21.06.2016, 08:47
@maryem123

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.

0

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


maryem123 
Beitragsersteller
 20.06.2016, 22:41

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

0

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


triopasi  20.06.2016, 20:49

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.

0
maryem123 
Beitragsersteller
 20.06.2016, 21:10
@triopasi

@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

0
maryem123 
Beitragsersteller
 20.06.2016, 21:15
@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  , 

0
DreiGegengifts  20.06.2016, 21:22
@maryem123

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

1
DreiGegengifts  20.06.2016, 21:25
@maryem123

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.

1