Как перейти к следующей итерации - PullRequest
6 голосов
/ 09 февраля 2011

Вот что я хочу сделать: если в цикле программа обнаружит ошибку, она выведет «Nothing» и перейдет к следующему циклу (пропускает print »« Служба обнаружена в порту: «+ px + "\ п"

   for(int px=PORT1; px <=PORT2; px++) { //search
       try{

           Socket s = new Socket(IPaddress,px);
       } catch(Exception e) {
               System.out.print("Nothing\n");
               // I want to go to next iteration

           }
       System.out.print("Service discovered at port: " + px + "\n");
   }

Какой код я должен вставить в улов? "перерыв" или "следующий" или ??? (Это Java)

Ответы [ 4 ]

15 голосов
/ 09 февраля 2011

Используйте ключевое слово continue:

continue;

Это прервет текущую итерацию и продолжится с вершины цикла.

Вот некоторые дальнейшие чтения:

продолжить Ключевое слово в Java

14 голосов
/ 09 февраля 2011

Если вы хотите распечатать сообщение (или выполнить какой-то код) только в том случае, если исключение не генерируется в определенной точке, поместите этот код после строки, которая может вызвать исключение:

try {
    Socket s = new Socket(IPaddress,px);
    System.out.print("Service discovered at port: " + px + "\n");
} catch(Exception e) {
    System.out.print("Nothing\n");
}

Это приводит к тому, что print не выполняется, если выбрасывается исключение, поскольку оператор try будет прерван.

Кроме того, вы можете иметь оператор continue внутри catch:

try {
    Socket s = new Socket(IPaddress,px);
} catch(Exception e) {
    System.out.print("Nothing\n");
    continue;
}
System.out.print("Service discovered at port: " + px + "\n");

Это приводит к тому, что весь код после try / catch не выполняется, если генерируется исключение, поскольку циклу явно сказано перейти к следующей итерации.

3 голосов
/ 09 февраля 2011

Ключевое слово, которое вы ищете: continue.Поместив continue после оператора print в блок catch, оставшиеся строки после конца блока catch будут пропущены, и начнется следующая итерация.

1 голос
/ 09 февраля 2011

Либо

  • Используйте ключевое слово continue в блоке исключений
  • Переместить «Service ...» в конец блока try
...