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 의 원인, 처리 및 방지에 대해 배웠습니다 .