Guide til ArrayStoreException

1. Oversikt

ArrayStoreException kastes ved kjøretid i Java når det blir gjort et forsøk på å lagre feil type objekt i en rekke objekter. Siden ArrayStoreException er et ukontrollert unntak, det er ikke typisk å håndtere eller erklære det.

I denne opplæringen vil vi demonstrere årsaken til ArrayStoreException, hvordan du håndterer det, og beste fremgangsmåter for å unngå det.

2. Årsaker til ArrayStoreException

Java kaster en ArrayStoreException når vi prøver å lagre en annen type objekt i en matrise i stedet for den deklarerte typen.

Anta at vi instanserte en matrise med String skriv og prøvde senere å lagre Heltall i det. I dette tilfellet, i løpet av kjøretiden, ArrayStoreException blir kastet:

Objektmatrise [] = ny streng [5]; matrise [0] = 2;

Unntaket blir kastet på den andre kodelinjen når vi prøver å lagre en feil verditype i matrisen:

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

Siden vi erklærte array som en Gjenstand, den kompilering er feilfri.

3. Håndtering av ArrayStoreException

Håndteringen av dette unntaket er ganske grei. Som ethvert annet unntak, må det også være omgitt i en prøvefangstblokk for håndtering:

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

4. Beste fremgangsmåter for å unngå dette unntaket

Det er anbefales å erklære matrisen som en bestemt klasse, for eksempel String eller Heltall, i stedet for Gjenstand. Når vi erklærer arraytypen som Gjenstand, da vil ikke kompilatoren kaste feil.

Men Å erklære matrisen med basisklassen og deretter lagre objekter i en annen klasse vil føre til en kompileringsfeil. La oss se dette med et raskt eksempel:

Strengmatrise [] = ny streng [5]; matrise [0] = 2;

I eksemplet ovenfor erklærer vi array-typen som String og prøv å lagre en Heltall i det. Dette vil føre til en kompileringsfeil:

Unntak i tråden "main" java.lang.Error: uløst kompilasjonsproblem: Type mismatch: kan ikke konvertere fra int til String på com.baeldung.arraystoreexception.ArrayStoreExampleCE.main (ArrayStoreExampleCE.java:8)

Det er bedre hvis vi får feil på kompileringstid i stedet for kjøretid ettersom vi har mer kontroll over førstnevnte.

5. Konklusjon

I denne opplæringen lærte vi årsakene, håndteringen og forebyggingen av ArrayStoreException i Java.

Det komplette eksemplet er tilgjengelig på GitHub.


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