Report input problems with labels instead of throwing.

Validation Status

ValidationStatus.scala
object Main {
  def main(args: Array[String]): Unit = {
    val age = 
    var status = "ok"
    if (age < 0) {
      status = "invalid"
    }
    if (age > 150) {
      status = "too-large"
    }
    val safeAge = if (status == "ok") age else 0

    println("age=" + age)
    println("status=" + status)
    println("safeAge=" + safeAge)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val age = 
    var status = "ok"
    if (age < 0) {
      status = "invalid"
    }
    if (age > 150) {
      status = "too-large"
    }
    val safeAge = if (status == "ok") age else 0

    println("age=" + age)
    println("status=" + status)
    println("safeAge=" + safeAge)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val age = 
    var status = "ok"
    if (age < 0) {
      status = "invalid"
    }
    if (age > 150) {
      status = "too-large"
    }
    val safeAge = if (status == "ok") age else 0

    println("age=" + age)
    println("status=" + status)
    println("safeAge=" + safeAge)
  }
}
validation-status Defensive code can return a status label for bad input rather than throwing an exception. A safe default keeps later steps deterministic.