Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách xử lý ArrayStoreException (unchecked) trong Java?


java.lang.ArrayStoreException là một ngoại lệ unchecked và có thể xảy ra khi chúng ta cố gắng lưu trữ một đối tượng của một kiểu vào một mảng các đối tượng của kiểu khác. Thường thì người ta sẽ gặp java.lang.ArrayStoreException: java.lang.Integer xảy ra khi cố gắng lưu trữ một số nguyên vào một mảng kiểu khác như mảng String hoặc mảng float, v.v.

Ví dụ 1

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

Kết quả

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

Trong chương trình trên, java.lang.ArrayStoreException: java.lang.Integer đã xảy ra

  • java.lang.ArrayStoreException: Ngoại lệ được ném bởi ngôn ngữ Java khi chúng ta cố gắng lưu trữ một đối tượng java.lang.Integer vào một mảng java.lang.Float.
  • java.lang.Integer: Integer là kiểu đối tượng đã được cố gắng lưu trữ vào một mảng kiểu khác.

Cách xử lý ArrayStoreException

Chúng ta có thể xử lý ArrayStoreException bằng cách sử dụng khối try và catch.

  • Bao quanh các câu lệnh có thể ném ArrayStoreException với khối try và catch.
  • Chúng ta có thể Catch ArrayStoreException.
  • Thực hiện hành động cần thiết cho chương trình, vì chúng ta đang xử lý ngoại lệ và việc thực thi không bị hủy bỏ.

Ví dụ 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"); 
    } 
}

Kết quả

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


Trong ví dụ trên, khi ngoại lệ xảy ra, việc thực thi chuyển đến khối catch từ điểm xảy ra ngoại lệ. Nó thực hiện câu lệnh trong khối catch và tiếp tục với câu lệnh hiện diện sau các khối try và catch.