Panduan untuk ArrayStoreException

1. Ikhtisar

ArrayStoreException dilemparkan saat runtime di Java saat upaya dilakukan untuk menyimpan jenis objek yang salah dalam larik objek . Karena ArrayStoreException adalah pengecualian yang tidak dicentang, tidak biasanya menangani atau mendeklarasikannya.

Dalam tutorial ini, kami akan mendemonstrasikan penyebab ArrayStoreException , cara menanganinya, dan praktik terbaik untuk menghindarinya.

2. Penyebab ArrayStoreException

Java melontarkan ArrayStoreException saat kita mencoba menyimpan jenis objek berbeda dalam larik alih-alih jenis yang dideklarasikan.

Misalkan kita membuat instance array dengan tipe String dan kemudian mencoba menyimpan Integer di dalamnya. Dalam kasus ini, selama runtime, ArrayStoreException muncul :

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

Pengecualian akan dilempar ke baris kedua kode ketika kita mencoba menyimpan tipe nilai yang salah dalam larik:

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

Karena kita mendeklarasikan array sebagai Object , kompilasi ini bebas dari kesalahan .

3. Menangani ArrayStoreException

Penanganan pengecualian ini cukup mudah. Seperti pengecualian lainnya, ini juga perlu diapit dalam blok coba-tangkap untuk penanganan:

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

4. Praktik Terbaik untuk Menghindari Pengecualian Ini

Hal ini dianjurkan untuk menyatakan tipe array sebagai kelas tertentu, seperti String atau Integer , bukan Object . Saat kita mendeklarasikan tipe array sebagai Object, maka compiler tidak akan memunculkan error apapun.

Tetapi mendeklarasikan array dengan kelas dasar dan kemudian menyimpan objek dari kelas yang berbeda akan menyebabkan kesalahan kompilasi . Mari kita lihat ini dengan contoh singkat:

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

Dalam contoh di atas, kami mendeklarasikan tipe array sebagai String dan mencoba menyimpan Integer di dalamnya. Ini akan menyebabkan kesalahan kompilasi:

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)

Lebih baik jika kita menemukan kesalahan pada waktu kompilasi daripada waktu proses karena kita memiliki kontrol lebih besar atas kesalahan sebelumnya.

5. Kesimpulan

Dalam tutorial ini, kita mempelajari penyebab, penanganan, dan pencegahan ArrayStoreException di Java.

Contoh lengkapnya tersedia di GitHub.