Útmutató az ArrayStoreException szolgáltatáshoz

1. Áttekintés

ArrayStoreException futás közben dobják el Java-ban amikor megpróbálják helytelen típusú objektumot tárolni egy objektumtömbben. Mivel ArrayStoreException ellenőrizetlen kivétel, nem tipikus annak kezelése vagy kijelentése.

Ebben az oktatóanyagban bemutatjuk az okát ArrayStoreException, hogyan kell kezelni, és az elkerülésének legjobb gyakorlatai.

2. okai ArrayStoreException

Java dob egy ArrayStoreException amikor a deklarált típus helyett egy más típusú objektumot próbálunk tárolni egy tömbben.

Tegyük fel, hogy egy tömböt példányosítottunk vele Húr típusú és később megpróbált tárolni Egész szám benne. Ebben az esetben futás közben, ArrayStoreException dobják:

Object array [] = új karakterlánc [5]; tömb [0] = 2;

A kivétel a kód második sorába kerül, amikor megpróbálunk helytelen értéktípust tárolni a tömbben:

Kivétel a "main" szálban java.lang.ArrayStoreException: java.lang.Integer at com.baeldung.array.arraystoreexception.ArrayStoreExceptionExample.main (ArrayStoreExceptionExample.java:9)

Mivel kijelentettük sor mint egy Tárgy, a az összeállítás hibamentes.

3. A. Kezelése ArrayStoreException

E kivétel kezelése meglehetősen egyszerű. Mint minden más kivétel, ennek is lennie kell körülvéve egy try-catch blokkban kezeléshez:

próbáld ki az {Object array [] = új karakterláncot [5]; tömb [0] = 2; } catch (ArrayStoreException e) {// a kivétel kezelése}

4. Legjobb gyakorlatok ennek a kivételnek az elkerülésére

Ez ajánlott a tömbtípust konkrét osztályként nyilvánítani, mint pl Húr vagy Egész szám, ahelyett Tárgy. Amikor a tömbtípust deklaráljuk Tárgy, akkor a fordító nem dob hibát.

De a tömbnek az alaposztályral való deklarálása, majd egy másik osztály objektumainak tárolása fordítási hibához vezet. Nézzük meg ezt egy gyors példával:

String tömb [] = új karakterlánc [5]; tömb [0] = 2;

A fenti példában a tömbtípust deklaráljuk Húr és próbáljon meg tárolni egy Egész szám benne. Ez fordítási hibához vezet:

Kivétel a "main" szálban java.lang.Error: Megoldatlan fordítási probléma: Típushiba: nem konvertálható int-ről String-re a com.baeldung.arraystoreexception.ArrayStoreExampleCE.main (ArrayStoreExampleCE.java:8)

Jobb, ha a fordítás idején fogunk hibákat, nem pedig futás közben mivel jobban ellenőrizhetjük az előbbit.

5. Következtetés

Ebben az oktatóanyagban megismertük az okokat, kezelésüket és megelőzésüket ArrayStoreException Java-ban.

A teljes példa a GitHub oldalon érhető el.


$config[zx-auto] not found$config[zx-overlay] not found