Ръководство за ArrayStoreException

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)

Тъй като декларирахме масива като обект , компилацията е без грешки .

3. Обработка на ArrayStoreException

Обработката на това изключение е доста ясна. Както всяко друго изключение, той също трябва да бъде заобиколен от блок за опит за улавяне за обработка:

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.