Java ArrayStoreException指南
瀏覽人數:1,409最近更新:
- java
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.避免此異常的最佳做法
建議將數組類型聲明為特定的類,例如String
或Integer
,而不是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)
最好是在編譯時而不是運行時捕獲錯誤,因為我們對前者有更多的控制權。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議