如何在Java中处理ArrayStoreException(未选中)?

 java.lang.ArrayStoreException是一个未经检查的 异常 ,当我们尝试存储的类型的对象不同的类型的对象的数组它可以发生。通常,会遇到 java.lang.ArrayStoreException:java.lang.Integer,它是在尝试将整数存储在不同类型的数组(例如String数组或float数组等)中时发生的。

例1

public class ArrayStoreExceptionTest {
   public static void main(String[] args) {
      Object[] names = new Float[2];
      names[1] = new Integer(2);
   }
}

输出结果

Exception in thread "main" java.lang.ArrayStoreException: java.lang.Integer
        at ArrayStoreExceptionTest.main(ArrayStoreExceptionTest.java:4)

在以上程序中,发生了  java.lang.ArrayStoreException:java.lang.Integer

  • java.lang.ArrayStoreException:当我们尝试将java.lang.Integer对象存储在java.lang.Float数组中时,java语言引发的异常 。

  • java.lang.Integer: Integer是尝试存储其他类型数组的对象的类型。

如何处理ArrayStoreException

我们可以使用 try和catch块来处理ArrayStoreException 

  • try和catch块将可以引发ArrayStoreException的语句括 起来。

  • 我们可以捕获 ArrayStoreException

  • 对我们的程序采取必要的操作,因为我们正在处理异常,并且执行不会中止。

例2

public class ArrayStoreExceptionTest {
   public static void main(String[] args) {
      Object[] names = new Float[2];
      try {
         names[1] = new Integer(2);
      } catch (ArrayStoreException e) {
         e.printStackTrace();
         System.out.println("ArrayStoreException is handled");
      }
      System.out.println("Continuing with the statements after try and catch blocks");
   }
}

输出结果

ArrayStoreException is handled
Continuing with the statements after try and catch blocks
java.lang.ArrayStoreException: java.lang.Integer
      at ArrayStoreExceptionTest.main(ArrayStoreExceptionTest.java:5)


在上面的示例中,当发生异常时,执行 从发生异常的位置落入catch块。它在catch块中执行该语句,并继续在try和catch块之后出现的语句。