안드로이드 개발

java.lang.IndexOutOfBoundsException 에러 간단 해결 방법

피커 2023. 1. 8. 23:24
728x90
반응형

개발하다가 아래와 같은 에러 메시지가 발생할때 간단히 해결하는 방법을 공유합니다.

 

1. 에러 메시지

  -. 에러 메시지로 배열의 크기가 0인데 0을 참조하려고 할때 발생한다.

     배열에 1개 이상의 데이터가 있어야 참조가 가능하며, 0개일때는 에러를 발생하게된다.

     아래는 개발중인 앱에서 발생한 에러이다.      

java.lang.IndexOutOfBoundsException
 
Exception java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
  at java.util.ArrayList.get (ArrayList.java:437)
  at com.picker.megapicker.PredictActivity$predictNumber$1.invokeSuspend (PredictActivity.kt:93)
  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33)
  at kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:106)
  at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely (CoroutineScheduler.kt:570)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask (CoroutineScheduler.kt:749)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker (CoroutineScheduler.kt:677)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run (CoroutineScheduler.kt:664)

2. 해결 방법

  -. 문제가 발생한 배열에 접근하기 전에 배열의 크기가 0이면 리턴하도록 코드를 추가한다.

      아래 코드에서는 return@launch 가 함수를 종료하는 구문이다. (코틀린)

      JAVA 및 다른언어에서는 return; 이라고 입력하면 함수가 종료된다.

if (predictTickets.size == 0) {
    Log.d(Utils.TAG, "onPredict: size == 0 ")
    return@launch
}

     -. 아래는 Git에 업로드한 코드 수정전과 수정후이다.

 

3. 관련 문서 내용


java.lang
Class IndexOutOfBoundsException

java.lang.Object
  |
  +--java.lang.Throwable
        |
        +--java.lang.Exception
              |
              +--java.lang.RuntimeException
                    |
                    +--java.lang.IndexOutOfBoundsException

Direct Known Subclasses:ArrayIndexOutOfBoundsException, StringIndexOutOfBoundsException


public class IndexOutOfBoundsExceptionextends RuntimeException

Thrown to indicate that an index of some sort (such as to an array, to a string, or to a vector) is out of range.

Applications can subclass this class to indicate similar exceptions.

Since:JDK1.0


 

Constructor Summary
IndexOutOfBoundsException()
          Constructs an IndexOutOfBoundsException with no detail message.
IndexOutOfBoundsException(String s)
          Constructs an IndexOutOfBoundsException with the specified detail message.

 

Methods inherited from class java.lang.Throwable
getMessage, printStackTrace, toString

 

Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

 

 

Constructor Detail

IndexOutOfBoundsException

public IndexOutOfBoundsException()

Constructs an IndexOutOfBoundsException with no detail message.

 

감사합니다.

반응형