Java ArrayStoreException指南

1.概述

嘗試在對像數組中存儲錯誤類型的對象時,Java會在運行時引發ArrayStoreException 。由於ArrayStoreException是未經檢查的異常,因此通常不處理或聲明它。

在本教程中,我們將說明ArrayStoreException的原因,如何處理它以及避免該問題的最佳實踐。

2. ArrayStoreException

當我們嘗試在數組中存儲其他類型的對象而不是聲明的類型時,Java引發ArrayStoreException

假設我們實例化了一個String類型的數組,然後嘗試將Integer存儲在其中。在這種情況下,在運行時會引發ArrayStoreException

Object array[] = new String[5];

 array[0] = 2;

當我們嘗試在數組中存儲不正確的值類型時,將在第二行代碼中引發異常:

Exception in thread "main" java.lang.ArrayStoreException: java.lang.Integer

 at org.1ju.array.arraystoreexception.ArrayStoreExceptionExample.main(ArrayStoreExceptionExample.java:9)

由於我們將array聲明為Object ,因此編譯是沒有錯誤的

3.處理ArrayStoreException

該異常的處理非常簡單。與其他任何異常一樣,還需要將其包含在try-catch塊中以進行處理:

try{

    Object array[] = new String[5];

 array[0] = 2;

 }

 catch (ArrayStoreException e) {

 // handle the exception

 }

4.避免此異常的最佳做法

建議將數組類型聲明為特定的類,例如StringInteger ,而不是Object 。當我們將數組類型聲明為Object,編譯器將不會拋出任何錯誤。

但是用基類聲明數組,然後存儲其他類的對象將導致編譯錯誤。讓我們來看一個簡單的例子:

String array[] = new String[5];

 array[0] = 2;

在上面的示例中,我們將數組類型聲明為String並嘗試在其中存儲一個Integer 。這將導致編譯錯誤:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:

 Type mismatch: cannot convert from int to String

 at org.1ju.arraystoreexception.ArrayStoreExampleCE.main(ArrayStoreExampleCE.java:8)

最好是在編譯時而不是運行時捕獲錯誤,因為我們對前者有更多的控制權。