0
0
Kotlinprogramming~5 mins

Result type for functional error handling in Kotlin

Choose your learning style9 modes available
Introduction

The Result type helps you handle success or failure in a clear way without crashing your program.

When you want to run a function that might fail and handle errors safely.
When you want to avoid using try-catch blocks everywhere in your code.
When you want to pass success or error results between functions clearly.
When you want to write cleaner code that shows success or failure explicitly.
Syntax
Kotlin
fun someFunction(): Result<Type> {
    return try {
        val value = /* do something that might fail */
        Result.success(value)
    } catch (e: Exception) {
        Result.failure(e)
    }
}

Use Result.success(value) to return a successful result.

Use Result.failure(exception) to return an error result.

Examples
This function returns success if division is possible, or failure if dividing by zero.
Kotlin
fun divide(a: Int, b: Int): Result<Int> {
    return if (b == 0) {
        Result.failure(IllegalArgumentException("Cannot divide by zero"))
    } else {
        Result.success(a / b)
    }
}
Use onSuccess and onFailure to handle the result.
Kotlin
val result = divide(10, 2)
result.onSuccess { value -> println("Result is $value") }
      .onFailure { error -> println("Error: ${error.message}") }
Sample Program

This program tries to divide numbers and prints success or failure messages using the Result type.

Kotlin
fun divide(a: Int, b: Int): Result<Int> {
    return if (b == 0) {
        Result.failure(IllegalArgumentException("Cannot divide by zero"))
    } else {
        Result.success(a / b)
    }
}

fun main() {
    val result1 = divide(10, 2)
    val result2 = divide(10, 0)

    result1.onSuccess { println("Success: $it") }
           .onFailure { println("Failure: ${it.message}") }

    result2.onSuccess { println("Success: $it") }
           .onFailure { println("Failure: ${it.message}") }
}
OutputSuccess
Important Notes

The Result type helps avoid crashes by handling errors explicitly.

You can chain onSuccess and onFailure to react to results.

Use getOrElse or getOrNull to extract values safely.

Summary

Result type wraps success or failure in one object.

Use Result.success and Result.failure to create results.

Handle results with onSuccess and onFailure for clear code.