拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Java ArrayStoreException指南

Java ArrayStoreException指南

白鹭 - 2021-11-24 596 0 0

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)

最好是在编译时而不是运行时捕获错误,因为我们对前者有更多的控制权。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *