Boolean определяется тем, выдается ли исключение? - PullRequest
0 голосов
/ 22 сентября 2019

Я пытаюсь проверить значения объекта, окружающие определенный индекс массивом.Например, в массиве 5 × 5 выбирается строка 3 столбца 3, затем код проверяет:

1 1 1 1 1

1 1 1 1 1

1 1 с 1 1

1 1 1 1 1

1 1 1 1 1

где s - это выбранное значение в массиве, а полужирные 1 - это значения, для которых проверяется код.

В некоторых случаях, например, в верхнем левом 1, могут создаваться исключения ArrayOutOfBoundsExceptions.Можно ли написать код таким образом, чтобы:

while(anExceptionIsNotThrown):
   check surrounding value

1 Ответ

0 голосов
/ 22 сентября 2019
boolean failed = false;
while (!failed){
    try{
        //code that maybe throws an exception
    } catch (ArrayOutOfBoundsException e){
        failed = true;
    }
}

Если выброшено исключение, флаг сбоя будет установлен в значение true, что указывает на останов цикла while.Другое решение, использующее оператор break:

while (true){
    try{
        //code that maybe throws an exception
    } catch (ArrayOutOfBoundsException e){
        break;
    }
}

Однако: while (true) никогда не является хорошей идеей, поэтому замените его собственным условием для трех строк / столбцов (также в первом примере с использованием * 1007).*).

Хотя мои решения будут работать, я полностью согласен с замечанием Джозефа Сибли, что вам лучше проверить границы массива, чем ждать выдачи исключения

...