1. 개요

ArrayStoreException객체 배열에 잘못된 유형의 객체를 저장하려고 하면 Java에서 런타임 시 throw 됩니다 . 이후 하여 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 com.baeldung.array.arraystoreexception.ArrayStoreExceptionExample.main(ArrayStoreExceptionExample.java:9)

우리가 선언 된 이후 배열을 int로서 객체컴파일에 오류가 무료입니다 .

3. ArrayStoreException 처리

이 예외의 처리는 매우 간단합니다. 다른 예외와 마찬가지로 처리를 위해 try-catch 블록 으로 둘러싸여야 합니다 .

try{
    Object array[] = new String[5];
    array[0] = 2;
}
catch (ArrayStoreException e) {
    // handle the exception
}

4. 이 예외를 피하기 위한 모범 사례

되는 등 특정 클래스와 배열 형으로 선언하는 것이 좋습니다 문자열 또는 정수를 대신, 객체 . 배열 유형을 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 com.baeldung.arraystoreexception.ArrayStoreExampleCE.main(ArrayStoreExampleCE.java:8)

오류를 더 잘 제어할 수 있으므로 런타임보다 컴파일 시간에 오류를 잡는 것이 좋습니다 .

5. 결론

이 예제에서는 Java에서 ArrayStoreException 의 원인, 처리 및 방지에 대해 배웠습니다 .

전체 예제는 GitHub에서 볼 수  있습니다 .

Junit footer banner