Dealing with IndexOutOfBoundsException
is a common challenge in Kotlin, especially for Android developers using lists or arrays. This error occurs when you try to access an index that doesn’t exist in a collection, such as a List
, Array
, or MutableList
.

In this guide, you’ll learn what causes this exception, how to reproduce it, and the best practices to prevent and handle it efficiently in Android Studio.
What Is IndexOutOfBoundsException?
It’s a runtime exception thrown when trying to access an illegal index in a collection. For example:
val numbers = listOf(1, 2, 3) println(numbers[5]) // Throws IndexOutOfBoundsException
How to Prevent IndexOutOfBoundsException in Kotlin
Use .getOrNull(index)
This safely returns null
if the index is out of range.
val value = numbers.getOrNull(5) ?: "Not Found" println(value) // Output: Not Found
Check Size Before Accessing
if (index < numbers.size) { println(numbers[index]) } else { println("Index is out of bounds.") }
Use .elementAtOrElse()
val result = numbers.elementAtOrElse(5) { -1 } println(result) // Output: -1
Example in Android Studio Project
Let’s create a simple example with a button that accesses a list.
MainActivity.kt
package com.example.indexerror import android.os.Bundle import android.widget.Button import android.widget.Toast import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { private val colors = listOf("Red", "Green", "Blue") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val checkButton = findViewById<Button>(R.id.btnCheckColor) checkButton.setOnClickListener { val index = 5 // intentionally out of bounds val color = colors.getOrNull(index) ?: "No color found" Toast.makeText(this, color, Toast.LENGTH_SHORT).show() } } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" android:padding="24dp"> <Button android:id="@+id/btnCheckColor" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Check Color" /> </LinearLayout>
Additional Resource
For deeper Kotlin list handling techniques, refer to Kotlin List Documentation.
Best Practices
- Avoid hardcoded indexes.
- Always check the size of the list before accessing.
- Use safe functions like
getOrNull()
orelementAtOrElse()
. - Write unit tests to check edge cases involving empty or short lists.