В каких случах использовать Nothing

«В каких случах использовать Nothing» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Nothing в Kotlin — это тип, который означает "никогда не завершается нормально". Используется в случаях:

  1. Функции, которые всегда выбрасывают исключение:
fun fail(message: String): Nothing {
    throw IllegalStateException(message)
}
  1. Бесконечные циклы:
fun infiniteLoop(): Nothing {
    while (true) {
        println("Running...")
    }
}
  1. В качестве аргумента для обобщенных типов, когда нужно указать, что возврата не будет:
fun <T> emptyList(): List<T> = throw Exception()
// Более точно:
fun <T> emptyList(): List<T> = fail("Empty")
  1. В ветках when или if, которые должны охватывать все случаи, но не возвращают значение:
val result = when (value) {
    is String -> value.length
    else -> throw Exception() // Тип Nothing
}

Nothing помогает компилятору понять, что выполнение не продолжится после вызова, что полезно для анализа потока управления.