Подтвердить что ты не робот

Проверка границ в Java

Я пытаюсь проверить, находится ли местоположение массива вне пределов, какой самый простой способ?

int[] arr;
populate(arr);
if(arr[-1] == null)
//out of bounds!

Что-то вроде этой работы?

Я уверен, что это можно сделать с помощью trycatch или сканера, но для простой небольшой программы, есть ли другой способ?

4b9b3361

Ответ 1

Абсолютно не используйте для этого try-catch. Просто используйте:

boolean inBounds = (index >= 0) && (index < array.length);

Реализация подхода с try-catch повлечет за собой захват ArrayIndexOutOfBoundsException, который является неконтролируемым исключением (т.е. подкласс RuntimeException). Такие исключения никогда не должны (или, по крайней мере, очень редко) быть пойманы и обработаны. Вместо этого их следует предотвратить в первую очередь.

Другими словами, исключенные исключения являются исключениями, из-за которых ваша программа не должна восстанавливаться. Теперь здесь и там могут быть исключения (не каламбур). Например, стало обычной практикой проверять, является ли строка парой в качестве целого числа, вызвав на ней Integer.parseInt() и поймав потенциал NumberFormatException (который не отмечен). Это считается ОК, но всегда думайте дважды, прежде чем делать что-то подобное.

Ответ 2

Нет, это вызовет исключение.

Вместо этого do

if (x < 0 || x >= arr.length) {
    //x is out of bounds!
}

Ответ 3

Лучше проверить, находится ли указатель в диапазоне вручную.

if(index >=0 && index < array.length){
   // in range
}  

Исключения, которые не отмечены, то есть, которые не требуют блока try-catch, не должны быть пойманы. ArrayIndexOutOfBoundsException является одним из них.

Все непроверенные исключения относятся к классу RuntimeException.
Из этого класса приходит IndexOutOfBoundsException
Это дополнительно специализируется на StringIndexOutOfBounds и ArrayIndexOutOfBounds

RuntimeException - это суперкласс из тех исключений, которые могут быть брошенному во время нормальной работы виртуальной машины Java.

RuntimeException и его подклассы - это исключенные исключения. Непроверенные исключения не должны быть объявлены в методе или конструктор бросает предложение, если они могут быть брошены путем выполнения метод или конструктор и распространяются вне метода или граница конструктора.