Panduan ArrayStoreException

1. Gambaran keseluruhan

ArrayStoreException dilemparkan pada waktu runtime di Java ketika percubaan dilakukan untuk menyimpan jenis objek yang salah dalam array objek . Oleh kerana ArrayStoreException adalah pengecualian yang tidak dicentang , tidak biasa mengendalikan atau menyatakannya.

Dalam tutorial ini, kami akan menunjukkan penyebab ArrayStoreException , cara mengatasinya, dan amalan terbaik untuk menghindarinya.

2. Punca ArrayStoreException

Java melemparkan ArrayStoreException ketika kita berusaha menyimpan jenis objek yang berlainan dalam array dan bukannya jenis yang dinyatakan.

Katakan kita membuat susunan dengan jenis String dan kemudian cuba menyimpan Integer di dalamnya. Dalam kes ini, semasa runtime, ArrayStoreException dilemparkan:

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

Pengecualian akan dilemparkan pada baris kedua kod ketika kami cuba menyimpan jenis nilai yang salah dalam array:

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

Oleh kerana kami menyatakan array sebagai Objek , penyusunannya bebas dari kesilapan .

3. Mengendalikan ArrayStoreException

Pengendalian pengecualian ini cukup mudah. Seperti pengecualian lain, ia juga perlu dikelilingi dalam blok tangkapan untuk menangani:

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

4. Amalan Terbaik untuk Mengelakkan Pengecualian Ini

Ia disyorkan untuk mengisytiharkan jenis array sebagai kelas tertentu, seperti String atau Integer , bukan Objek . Apabila kita menyatakan jenis array sebagai Objek, maka penyusun tidak akan membuang sebarang kesalahan.

Tetapi menyatakan susunan dengan kelas asas dan kemudian menyimpan objek dari kelas yang berbeza akan menyebabkan kesalahan penyusunan . Mari lihat ini dengan contoh ringkas:

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

Dalam contoh di atas, kami menyatakan jenis array sebagai String dan cuba menyimpan Integer di dalamnya. Ini akan menyebabkan ralat penyusunan:

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 melakukan kesalahan pada waktu kompilasi dan bukannya waktu berjalan kerana kita mempunyai lebih banyak kawalan terhadap yang sebelumnya.

5. Kesimpulan

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

Contoh lengkap boleh didapati di GitHub.