이번 글에서는 java.lang.ArrayIndexOutOfBoundsException 에러 해결 방법에 대하여 알아보겠습니다.
배열의 크기를 n이라고 했을 때 배열의 인덱스는 1부터 n까지가 아닌 0부터 n-1까지입니다.
프로그래밍 중 ArrayIndexOutOfBoundsException이 가장 많이 발생하는 이유중 하나죠.
C/C++과 달리 자바는 인덱스가 배열의 크기보다 크거나 음수 인덱스에 대한 요청이 있으면 자바는 위의 예외를 발생시킵니다.
또한 이 예외는 자바 컴파일러는 검사하지않고 항상 런타임(실행도중)에 예외를 발생시킵니다.
예제를 통하여 에러가 발생한 이유와 해결 방법에 대하여 알아보도록 하겠습니다.
아래의 코드는 arr의 5번째 요소를 출력하는 예제입니다.
public static void main(String[] args) {
int arr[] = {0, 1, 2, 3, 4};
System.out.print(arr[5]);
}
출력 결과
arr이란 배열의 크기는 5입니다. 따라서 인덱스는 0부터 4(n-1)까지입니다.
하지만 배열의 5번째 인덱스에 접근하려고 시도했기 때문에 자바는 해당 예외를 throw한 것입니다.
두 번째 Exception 발생의 예입니다.
아래 코드는 list의 2번째 요소를 가져오는 예제입니다.
ArrayList<String> list = new ArrayList<>();
list.add("1");
list.add("2");
System.out.print(list.get(2));
출력 결과
위 코드를 보시면 list 객체를 생성하고 2번 add해주었습니다. (list의 크기 = 2)
list의 크기가 2이므로 접근 가능한 인덱스는 0부터 1(2-1)까지입니다.
따라서 list의 2번째 인덱스에 접근하려고 했기 때문에 해당 예외를 throw한 것입니다.
그렇다면 어떤식으로 이런 예외에 대해 올바르게 예외처리를 수행할 수 있을까요?
올바른 배열 사용법
- 반복문에서 다음과 같이 사용합니다.
for(int i=0; i<arr.legth; i++) { ... }
- 또한, foreach문을 사용할 수 있습니다.
for(int i : arr) {...}
'1. 웹개발 > 1_2_5 Error Handling' 카테고리의 다른 글
java.util.IllegalFormatConversionException 해결 방법 (1) | 2020.02.24 |
---|---|
java.lang.ArithmeticException 해결 방법 (0) | 2020.02.17 |