728x90
서론
Spring Boot 환경에서 특정 API 호출 시 발생하는 IndexOutOfBoundsException 이슈를 정리해본다.
class java.lang.IndexOutOfBoundsException -
java.lang.IndexOutOfBoundsException:Index 0 out of bounds for length 0
해당 이슈는 리스트를 제어하는 로직에서
Index [0]에 위치하는 값을 찾을 수 없을 경우 발생할 수 있다.
Problem Example
- IndexOutOfBoundsException은 컬렉션이나 배열의 인덱스가 유효 범위를 벗어날 때 발생하는 예외이다.
- 일반적으로 리스트의 특정 인덱스를 접근 시
- 해당 인덱스가 리스트의 크기보다 크거나 리스트가 비어 있는 경우에 발생한다.
- 해당 인덱스가 리스트의 크기보다 크거나 리스트가 비어 있는 경우에 발생한다.
- 리스트의 첫 번째 요소를 접근 시
- 리스트가 비어 있으면 IndexOutOfBoundsException이 발생합니다.
- 이는 프로덕션 환경에서 애플리케이션의 중단을 초래할 수 있기 때문에, 철저한 예외 처리가 필요하다.
return EventItem.builder()
.eventNo(eventNo)
.itemNo((items != null) ? items.get(0).getItemNo() : 0) // 예외 발생 가능
.build();
Solution Example
- 개선된 코드
- items가 null이 아니고, 비어 있지 않은 경우를 예외처리하여 첫 번째 요소 접근
- 이를 통해 IndexOutOfBoundsException을 방지
return EventItem.builder()
.eventNo(eventNo)
.itemNo((items != null && !items.isEmpty()) ? items.get(0).getitemNo() : 0) // 개선된 코드
.build();
728x90
반응형
'Develop' 카테고리의 다른 글
[Flutter] Uri를 활용한 SMS 보내기 기능 구현 (0) | 2024.08.29 |
---|---|
[SMTP] 수신 메일에서의 hover, onmouse 기능 미지원 이슈 (4) | 2024.08.28 |
[Java] params URLEncoder 처리 (0) | 2024.07.30 |
[CI/CD] Spring Boot .jar 서버 배포 스크립트 개선 (0) | 2024.07.25 |
[Java] Mybatis Column '{컬럼명}' in IN/ALL/ANY subquery is ambiguous 해결 (0) | 2024.07.19 |
[Flutter] 안드로이드 스튜디오 Profiler, Devtools (0) | 2024.07.12 |
[JDK, PASS] cannot access class com.sun.crypto.provider.SunJCE (0) | 2024.06.20 |
[AI] 프롬프트로 웹 테트리스 구현 (0) | 2024.05.28 |