Рубрики
Без рубрики

Руководство по ArrayStoreException

Узнайте причину исключения ArrayStoreException, как с ним справиться и рекомендации по его предотвращению

Автор оригинала: baeldung.

1. Обзор

Исключение ArrayStoreException возникает во время выполнения в Java при попытке сохранить неправильный тип объекта в массиве объектов . Поскольку ArrayStoreException является непроверенным исключением , его не принято обрабатывать или объявлять.

В этом уроке мы продемонстрируем причину ArrayStoreException , как с ней справиться и рекомендации по ее предотвращению.

2. Причины исключения ArrayStoreException

Java выдает исключение ArrayStoreException , когда мы пытаемся сохранить в массиве другой тип объекта вместо объявленного типа.

Предположим, мы создали экземпляр массива с типом String , а затем попытались сохранить в нем Integer . В этом случае во время выполнения выбрасывается исключение ArrayStoreException :

Object array[] = new String[5];
array[0] = 2;

Исключение будет выдано во второй строке кода, когда мы попытаемся сохранить неправильный тип значения в массиве:

Exception in thread "main" java.lang.ArrayStoreException: java.lang.Integer
    at com.baeldung.array.arraystoreexception.ArrayStoreExceptionExample.main(ArrayStoreExceptionExample.java:9)

Поскольку мы объявили array как Объект , компиляция не содержит ошибок .

3. Обработка исключения ArrayStoreException

Обработка этого исключения довольно проста. Как и любое другое исключение, оно также должно быть окружено в блоке try-catch для обработки:

try{
    Object array[] = new String[5];
    array[0] = 2;
}
catch (ArrayStoreException e) {
    // handle the exception
}

4. Наилучшие методы, позволяющие избежать Этого Исключения

Рекомендуется объявить тип массива как определенный класс, например String или Integer , вместо Object . Когда мы объявляем тип массива как Object, компилятор не выдаст никакой ошибки.

Но объявление массива с базовым классом и последующее хранение объектов другого класса приведет к ошибке компиляции . Давайте посмотрим на это на быстром примере:

String array[] = new String[5];
array[0] = 2;

В приведенном выше примере мы объявляем тип массива как String и пытаемся сохранить в нем Целое число . Это приведет к ошибке компиляции:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
  Type mismatch: cannot convert from int to String
    at com.baeldung.arraystoreexception.ArrayStoreExampleCE.main(ArrayStoreExampleCE.java:8)

Лучше, если мы будем ловить ошибки во время компиляции, а не во время выполнения , поскольку у нас больше контроля над первым.

5. Заключение

В этом уроке мы изучили причины, обработку и предотвращение ArrayStoreException в Java.

Полный пример доступен на GitHub .