Vejledning til ArrayStoreException

1. Oversigt

ArrayStoreException kastes ved kørsel i Java når der gøres et forsøg på at gemme den forkerte objekttype i en række objekter. Siden ArrayStoreException er en ukontrolleret undtagelse, det er ikke typisk at håndtere eller erklære det.

I denne vejledning demonstrerer vi årsagen til ArrayStoreException, hvordan man håndterer det, og bedste praksis for at undgå det.

2. Årsager til ArrayStoreException

Java kaster en ArrayStoreException når vi prøver at gemme en anden type objekt i en matrix i stedet for den deklarerede type.

Antag, at vi instantierede et array med Snor type og senere forsøgt at gemme Heltal i det. I dette tilfælde under runtime, ArrayStoreException kastes:

Objekt array [] = ny streng [5]; matrix [0] = 2;

Undtagelsen kastes på den anden kodelinje, når vi prøver at gemme en forkert værditype i arrayet:

Undtagelse i tråden "main" java.lang.ArrayStoreException: java.lang.Integer at com.baeldung.array.arraystoreexception.ArrayStoreExceptionExample.main (ArrayStoreExceptionExample.java:9)

Siden vi erklærede array som en Objekt, det kompilering er fejlfri.

3. Håndtering af ArrayStoreException

Håndteringen af ​​denne undtagelse er ret ligetil. Som enhver anden undtagelse skal det også være omgivet af en prøvefangstblok til håndtering:

prøv {Objekt array [] = ny streng [5]; matrix [0] = 2; } fange (ArrayStoreException e) {// håndtere undtagelsen}

4. Bedste fremgangsmåder for at undgå denne undtagelse

det er anbefales at erklære arraytypen som en bestemt klasse, f.eks Snor eller Heltal, i stedet for Objekt. Når vi erklærer array-typen som Objekt, så kaster compileren ikke nogen fejl.

Men at erklære arrayet med basisklassen og derefter lagre objekter i en anden klasse vil føre til en kompileringsfejl. Lad os se dette med et hurtigt eksempel:

Streng array [] = ny streng [5]; matrix [0] = 2;

I ovenstående eksempel erklærer vi array-typen som Snor og prøv at gemme en Heltal i det. Dette vil føre til en kompileringsfejl:

Undtagelse i tråden "main" java.lang.Error: Uopklaret kompileringsproblem: Type mismatch: kan ikke konverteres fra int til String på com.baeldung.arraystoreexception.ArrayStoreExampleCE.main (ArrayStoreExampleCE.java:8)

Det er bedre, hvis vi fanger fejl ved kompileringstid i stedet for runtime da vi har mere kontrol over førstnævnte.

5. Konklusion

I denne vejledning lærte vi årsagerne, håndteringen og forebyggelsen af ArrayStoreException i Java.

Det komplette eksempel er tilgængeligt på GitHub.


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