Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีจัดการ ArrayStoreException (unchecked) ใน Java

java.lang.ArrayStoreException เป็น unchecked exception ที่เกิดขึ้นเมื่อเราพยายามเก็บออบเจ็กต์ของชนิดหนึ่งลงในอาเรย์ของออบเจ็กต์ชนิดอื่น ปกติแล้วจะพบ java.lang.ArrayStoreException: java.lang.Integer ซึ่งเกิดจากการพยายามเก็บค่า 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: Exception ที่ Java โยนเมื่อพยายามเก็บออบเจ็กต์ java.lang.Integer ลงในอาเรย์ของ java.lang.Float
  • java.lang.Integer: ชนิดของออบเจ็กต์ที่พยายามเก็บลงในอาเรย์ชนิดอื่น

วิธีจัดการ ArrayStoreException

เราสามารถจัดการ ArrayStoreException ได้โดยใช้ try-catch blocks

  • ล้อมรอบคำสั่งที่อาจโยน ArrayStoreException ด้วย try-catch blocks
  • จับ ArrayStoreException
  • ดำเนินการที่จำเป็นสำหรับโปรแกรม เนื่องจากเราจัดการ exception แล้ว การทำงานจึงไม่หยุดชะงัก

ตัวอย่างที่ 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)

ในตัวอย่างนี้ เมื่อ exception เกิดขึ้น การทำงานจะกระโดดไปที่ catch block จากจุดที่ exception เกิดขึ้น ทำงานคำสั่งใน catch block แล้วต่อไปทำงานคำสั่งหลัง try-catch blocks ต่อ