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.foreach.array.arraystoreexception.ArrayStoreExceptionExample.main(ArrayStoreExceptionExample.java:9)
Поскольку мы объявили массив
как объект
, компиляция выполняется без ошибок .
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.foreach.arraystoreexception.ArrayStoreExampleCE.main(ArrayStoreExampleCE.java:8)
Будет лучше, если мы поймаем ошибки во время компиляции, а не во время выполнения , поскольку у нас больше контроля над первым.
5. Вывод
В этом руководстве мы узнали о причинах, обработке и предотвращении ArrayStoreException
в Java.
Полный пример доступен на GitHub .