Каков наилучший способ вызвать исключение, но не остановить программу? - PullRequest
0 голосов
/ 27 января 2020

Пожалуйста, найдите ниже пример моей потребности. Действительно, я не хочу закрывать весь процесс, потому что даже если он выдает исключение, он может продолжаться.

L oop

// set a lot of variables and execute some methods
for (int i = 0, i < items.length; i++) {
     // blablabla
     myMethod()
     // blablabla2
}
// some code here also

MyMethod ()

// blabla
if (!found)
     throw new EndCurrentProcessException()
// blabla

EndCurrentProcessException

public void EndCurrentProcessException() {
     ??? What I'm supposed to put here to stop the loop iteration ???
}

Возможно, использование throw new не является хорошим способом сделать это.

Надеюсь, понятно, если нет, не стесняйтесь спрашивать меня больше информации.

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Попробуйте использовать оператор try-catch.

for (int i = 0, i < items.length; i++) {
    // blablabla
    try {
        myMethod();
    } catch(EndCurrentProcessException e){
        // do something or continue;
        continue;
    }
    // blablabla2
 }
 // some code here also
0 голосов
/ 27 января 2020

Не бросайте исключения. Обработайте сбой метода в зависимости от того, что вы считаете нужным.

В вашем примере измените метод myMethod () , чтобы он возвращал логическое значение true , если оно прошло успешно, и false , если это не так:

L oop:

// set a lot of variables and execute some methods
for (int i = 0, i < items.length; i++) {
   // blablabla
   if (!myMethod()) {
       // Skip this particular ITEM...
       continue;
       // Or whatever you want.
   }
   // blablabla2
}

MyMethod ():

public boolean myMethod() {
    // ... Method code ...
    if (!found) {
        return false;
    }
    // ... Possibly more Method code ...
    return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...