Vodič za ArrayStoreException

1. Pregled

ArrayStoreException bačen je za vrijeme izvođenja na Javi kada se pokušava pohraniti netočna vrsta objekta u niz objekata. Od ArrayStoreException je neprovjerena iznimka, nije tipično postupati s njom ili je prijaviti.

U ovom uputstvu demonstrirat ćemo uzrok ArrayStoreException, kako to riješiti i najbolje prakse za izbjegavanje.

2. Uzroci ArrayStoreException

Java baca ArrayStoreException kada pokušavamo pohraniti drugu vrstu objekta u niz umjesto deklariranog tipa.

Pretpostavimo da smo niz napravili pomoću Niz tipa i kasnije pokušao pohraniti Cijeli broj u tome. U ovom slučaju, tijekom izvođenja, ArrayStoreException bačeno je:

Niz objekata [] = novi niz [5]; niz [0] = 2;

Iznimka će se pojaviti na drugom retku koda kada pokušamo pohraniti netočnu vrstu vrijednosti u polje:

Iznimka u niti "main" java.lang.ArrayStoreException: java.lang.Integer na com.baeldung.array.arraystoreexception.ArrayStoreExceptionExample.main (ArrayStoreExceptionExample.java:9)

Otkad smo se izjasnili niz kao an Objekt, kompilacija je bez pogrešaka.

3. Rukovanje ArrayStoreException

Rukovanje ovom iznimkom prilično je jednostavno. Kao i svaka druga iznimka, to također mora biti okružen blokom try-catch za rukovanje:

isprobajte {Object array [] = new String [5]; niz [0] = 2; } catch (ArrayStoreException e) {// obrada iznimke}

4. Najbolji postupci za izbjegavanje ove iznimke

to je preporuča se deklarirati vrstu polja kao određenu klasu, kao što je Niz ili Cijeli broj, umjesto Objekt. Kada deklariramo tip polja kao Objekt, tada kompajler neće baciti nikakvu pogrešku.

Ali deklariranje niza s osnovnom klasom, a zatim spremanje objekata druge klase dovest će do pogreške u kompilaciji. Pogledajmo ovo na brzom primjeru:

Niz niza [] = novi niz [5]; niz [0] = 2;

U gornjem primjeru deklariramo vrstu polja kao Niz i pokušajte spremiti Cijeli broj u tome. To će dovesti do pogreške u kompilaciji:

Iznimka u niti "main" java.lang.Error: neriješeni problem kompilacije: Nepodudaranje tipa: ne može se pretvoriti iz int u String na com.baeldung.arraystoreexception.ArrayStoreExampleCE.main (ArrayStoreExampleCE.java:8)

Bolje je ako pogreške uhvatimo u vrijeme prevođenja, a ne u vrijeme izvođenja kao što imamo veću kontrolu nad prvima.

5. Zaključak

U ovom uputstvu saznali smo uzroke, postupanje i prevenciju ArrayStoreException na Javi.

Cjelovit primjer dostupan je na GitHubu.