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.