Вы писали:
Бит try / catch должен перехватывать любые движения вне доски с шагом x, а затем снова проходить цикл.
Нетне должно.Похоже, вы думаете об обработчике исключений («бите перехвата»), как если бы это был метод, который вызывается при возникновении исключения, который вернет управление обратно туда, откуда оно было вызвано.Они работают не так.
Когда в вашем коде возникает ArrayIndexOutOfBoundsException
, управление переходит к обработчику исключений.Вся обработка кода в блоке try
прекращена - он не будет возобновлен.Код в блоке catch
выполняется.Если x==8
, ваш метод вернет значение;но в противном случае ваш обработчик исключений просто увеличивает x и завершает работу.Это означает, что выполнение вашего кода начинается после окончания блока catch
.Вы не показали остальную часть своего метода - я думаю, что должно быть больше, так как требуется вернуть значение - поэтому я не могу точно сказать, что происходит дальше, но это может привести к ряду проблем.
Обработка исключений здесь просто неуместна.Проверьте ваши координаты по размеру доски явно.