Return a simple status object instead of throwing.

Result-Like Status

ResultLikeStatus.kt
class ParseStatus(val ok: Boolean, val text: String)

fun parseCount(raw: String): ParseStatus {
    val number = raw.toIntOrNull()
    if (number == null) {
        return ParseStatus(false, "not-number")
    }
    return ParseStatus(true, "count:$number")
}

fun main() {
    val raw = 
    val status = parseCount(raw)
    val outcome = if (status.ok) {
        "ok"
    } else {
        "fail"
    }

    println("raw=$raw")
    println("outcome=$outcome")
    println("text=${status.text}")
}
class ParseStatus(val ok: Boolean, val text: String)

fun parseCount(raw: String): ParseStatus {
    val number = raw.toIntOrNull()
    if (number == null) {
        return ParseStatus(false, "not-number")
    }
    return ParseStatus(true, "count:$number")
}

fun main() {
    val raw = 
    val status = parseCount(raw)
    val outcome = if (status.ok) {
        "ok"
    } else {
        "fail"
    }

    println("raw=$raw")
    println("outcome=$outcome")
    println("text=${status.text}")
}
class ParseStatus(val ok: Boolean, val text: String)

fun parseCount(raw: String): ParseStatus {
    val number = raw.toIntOrNull()
    if (number == null) {
        return ParseStatus(false, "not-number")
    }
    return ParseStatus(true, "count:$number")
}

fun main() {
    val raw = 
    val status = parseCount(raw)
    val outcome = if (status.ok) {
        "ok"
    } else {
        "fail"
    }

    println("raw=$raw")
    println("outcome=$outcome")
    println("text=${status.text}")
}
status-result A small status type can report success or failure without an exception path.