Check a value before using it and return a small success or failure result.

validation-branch A validation branch handles bad input before it reaches code that could fail.

Validation Branch

raw
ValidationBranch.kt
Replay: real traced execution (multi-file project)
fun main() {
    val raw = "42"
    val parsed = raw.toIntOrNull()
    val result = if (parsed == null) {
        "invalid"
    } else {
        "value:$parsed"
    }

    println("raw=$raw")
    println("result=$result")
}
fun main() {
    val raw = "oops"
    val parsed = raw.toIntOrNull()
    val result = if (parsed == null) {
        "invalid"
    } else {
        "value:$parsed"
    }

    println("raw=$raw")
    println("result=$result")
}
fun main() {
    val raw = "7"
    val parsed = raw.toIntOrNull()
    val result = if (parsed == null) {
        "invalid"
    } else {
        "value:$parsed"
    }

    println("raw=$raw")
    println("result=$result")
}
  1. raw ← 42, parsed ← 42, result ← value:42

    1fun main() {2    val raw→ 42 = "42" //@raw="oops", "7"3    val parsed→ 42 = raw42.toIntOrNull()4    val result→ value:42 = if (parsed42 == null) {5        "invalid"6    } else {7        "value:$parsed42"8    }910    println("raw=$raw42")11    println("result=$resultvalue:42")12}
    outputraw=42
    result=value:42
  1. raw ← oops, parsed ← null, result ← invalid

    1fun main() {2    val raw→ oops = "oops"3    val parsed→ null = rawoops.toIntOrNull()4    val result→ invalid = if (parsednull == null) {5        "invalid"6    } else {7        "value:$parsednull"8    }910    println("raw=$rawoops")11    println("result=$resultinvalid")12}
    outputraw=oops
    result=invalid
  1. raw ← 7, parsed ← 7, result ← value:7

    1fun main() {2    val raw→ 7 = "7"3    val parsed→ 7 = raw7.toIntOrNull()4    val result→ value:7 = if (parsed7 == null) {5        "invalid"6    } else {7        "value:$parsed7"8    }910    println("raw=$raw7")11    println("result=$resultvalue:7")12}
    outputraw=7
    result=value:7