EEALL@ONCE

☕StringIndexOutOfBoundsException 본문

언어💻/자바☕

☕StringIndexOutOfBoundsException

올엣원스 2023. 8. 17. 22:02
728x90

이 에러는 문자열의 인덱스 범위를 벗어나는 접근 시도로 인해 발생합니다. 주로 문자열의 길이를 초과하거나 음수 인덱스에 접근할 때 발생합니다.

가장 일반적인 상황은 다음과 같습니다:

String text = "Hello, World!";
char character = text.charAt(15); // 여기서 인덱스 15는 범위를 벗어나므로 StringIndexOutOfBoundsException이 발생합니다.



이 문제를 해결하기 위해서는 다음과 같은 점을 고려해야 합니다:

1. **인덱스 검사:** 문자열의 길이를 넘어가는지 검사하는 것이 중요합니다.

if (index >= 0 && index < text.length()) {
    char character = text.charAt(index);
} else {
    // 예외 처리 또는 오류 메시지 출력
}



2. **문자열 길이 확인:** `charAt` 메서드로 접근하기 전에 반드시 문자열의 길이를 확인하세요.

int textLength = text.length();
if (index >= 0 && index < textLength) {
    char character = text.charAt(index);
} else {
    // 예외 처리 또는 오류 메시지 출력
}


3. **문자열 인덱스는 0부터 시작합니다:** 첫 번째 문자는 인덱스 0, 두 번째 문자는 인덱스 1이며 이런 식으로 이어집니다.

효율적인 방식은 주로 인덱스 범위를 검사하여 올바른 접근을 보장하는 것입니다. 이는 불필요한 예외 상황을 방지하고 코드의 안정성을 높이는 데 도움이 됩니다.

만약 문자열을 자주 접근해야 한다면, 각 인덱스에 대한 접근이 반복될 때마다 길이를 다시 계산하는 것보다는 길이를 변수에 저장하여 재사용하는 것이 효율적입니다.

위의 코드에서의 부작용은 문자열 인덱스가 올바르지 않을 경우 `StringIndexOutOfBoundsException`이 발생한다는 점입니다. 이는 프로그램이 비정상적으로 종료되는 것을 의미하며, 이를 처리하기 위한 예외 처리나 오류 메시지 출력이 필요합니다.

728x90

'언어💻 > 자바☕' 카테고리의 다른 글

☕toLowerCase/toUpperCase  (0) 2023.08.21
☕DateTimeFormatter  (0) 2023.08.21
☕InputStream  (0) 2023.08.17
☕ Scanner / System.in  (0) 2023.08.17
☕ 원시형 매개변수 vs 참조형 매개변수  (0) 2023.08.17