Anleitung zur ArrayStoreException

1. Übersicht

ArrayStoreException wird zur Laufzeit in Java ausgelöst, wenn versucht wird, den falschen Objekttyp in einem Array von Objekten zu speichern . Da ArrayStoreException eine nicht aktivierte Ausnahme ist, ist es nicht typisch, sie zu behandeln oder zu deklarieren.

In diesem Tutorial zeigen wir die Ursache von ArrayStoreException , den Umgang damit und bewährte Methoden zur Vermeidung.

2. Ursachen der ArrayStoreException

Java löst eine ArrayStoreException aus, wenn wir versuchen, anstelle des deklarierten Typs einen anderen Objekttyp in einem Array zu speichern.

Angenommen, wir haben ein Array mit dem Typ String instanziiert und später versucht, Integer darin zu speichern . In diesem Fall wird zur Laufzeit die ArrayStoreException ausgelöst:

Object array[] = new String[5]; array[0] = 2;

Die Ausnahme wird in der zweiten Codezeile ausgelöst, wenn wir versuchen, einen falschen Werttyp im Array zu speichern:

Exception in thread "main" java.lang.ArrayStoreException: java.lang.Integer at com.baeldung.array.arraystoreexception.ArrayStoreExceptionExample.main(ArrayStoreExceptionExample.java:9)

Da wir Array als Objekt deklariert haben , ist die Kompilierung fehlerfrei .

3. Behandlung der ArrayStoreException

Die Behandlung dieser Ausnahme ist ziemlich einfach. Wie jede andere Ausnahme muss es für die Handhabung auch in einem Try-Catch-Block eingeschlossen sein :

try{     Object array[] = new String[5]; array[0] = 2; } catch (ArrayStoreException e) { // handle the exception }

4. Best Practices zur Vermeidung dieser Ausnahme

Es wird empfohlen, den Array-Typ als eine bestimmte Klasse zu deklarieren, z. B. String oder Integer anstelle von Object . Wenn wir den Array-Typ als Objekt deklarieren , gibt der Compiler keinen Fehler aus.

Das Deklarieren des Arrays mit der Basisklasse und das Speichern von Objekten einer anderen Klasse führt jedoch zu einem Kompilierungsfehler . Lassen Sie uns dies anhand eines kurzen Beispiels sehen:

String array[] = new String[5]; array[0] = 2;

Im obigen Beispiel deklarieren wir den Array-Typ als String und versuchen, eine Ganzzahl darin zu speichern . Dies führt zu einem Kompilierungsfehler:

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)

Es ist besser, wenn wir Fehler zur Kompilierungszeit als zur Laufzeit abfangen, da wir mehr Kontrolle über die ersteren haben.

5. Schlussfolgerung

In diesem Tutorial haben wir die Ursachen, den Umgang und die Verhinderung von ArrayStoreException in Java kennengelernt .

Das vollständige Beispiel ist auf GitHub verfügbar.