2012-03-31 3 views
1

Hallo Leute, ich versuche Titel von einer Reihe von URLs in einem String-Array von For-Schleife zu drucken, während Drucken, in einigen Fällen eine Verbindung nicht hergestellt werden kann und eine Ausnahme auslösen alle übrigen Elemente stoppt ....Wie man Ausnahmen ignoriert und fortsetzt für Schleife vom Anfang

ich diesen Code verwende zu drucken, kann mir jemand helfen, die Ausnahmen und fahren Sie mit der Schleife mit einem anderen Element aus dem String-Array ...

for (int f = 0; f < fin.length; f++) //fin be string array of urls 
{ 
Document finaldoc = Jsoup.connect(fin[f]).get(); 
out.println(finaldoc.title()); 
} 
zu ignorieren

eine der Ausnahmen ist

java.net.SocketTimeoutException: Read timed out 

Antwort

13

Sie benötigen ein try{ } catch { }

for (int f = 0; f < fin.length; f++) //fin be string array of urls 
{ 
    try { 
     Document finaldoc = Jsoup.connect(fin[f]).get(); 
     out.println(finaldoc.title()); 
    } 
    catch (SocketTimeoutException exception) { 
     continue; 
    } 
} 

Offensichtlich ist dies keine gute Praxis ist, da es nicht beheben lässt oder sogar den Fehler behandeln, aber das ist, wie Sie durch die Schleife iteriert würden.

+1

'brechen' ... er möchte die Schleife fortsetzen, nicht verlassen. Auch das ist eine gute Übung. Vielleicht möchten Sie sehen, ob die URLs real sind und unter normalen Bedingungen eine Zeitüberschreitung erwarten: Ihr Kommentar ist auch falsch. – Bohemian

+0

Ja, ich habe das bereits behoben :) – Igor

+0

wird dies mit den anderen Elementen im String-Array fortgesetzt ... –

2

Sie können einen leeren Haken bieten:

for (int f = 0; f < fin.length; f++) //fin be string array of urls 
    { 
     try{ 
     Document finaldoc = Jsoup.connect(fin[f]).get(); 
     out.println(finaldoc.title()); 
     } catch(Exception e){} 
    } 
+0

wird dies mit den anderen Elementen in der Zeichenfolge-Array ... –

+3

@KingAslan statt fragen, ob es fortfahren wird oder nicht, versuchen Sie den Code selbst –

+0

danke .... für Ihren Vorschlag ..... aber ich Bin in einer Situation, dass ich keine Zeit habe, es selbst zu versuchen .... –

0

Sie benötigen eine while-Schleife statt einer for-Schleife. Dann können Sie die Ausnahme abfangen und weitermachen. Dadurch wird die Schleife fortgesetzt, während die Ausnahme in der von Ihnen gewählten Weise behandelt wird. Natürlich wird ein for mit dem continue im Exception-Handler genauso verfahren wie in der angenommenen Antwort. Hoppla!

int[] myArray = {1,2,3,4,5,4,2,3}; 
    int index = 0; 

    while(index < myArray.length) { 

     try { 
      if(myArray[index] == 4) { 
       throw new Exception(); 
      } else { 
       System.out.println(myArray[index]); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     index++; 
    } 
Verwandte Themen