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 .