Options and Error Handling
Validation Status
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.