Docs / Tutorial
05 · Errors
Do not use Result / Ok / Err / ?. >> expr throws errors.Error; catch with or (err) { }.
Source
@main
#errors
fn read_name(ok bool) string {
if !ok {
>> errors.new("empty name")
}
<< "ada"
}
fn load_or_fallback(ok bool) string {
<< read_name(ok) or (err) {
println(err.msg())
<< "fallback"
}
}
fn main() int {
s := load_or_fallback(false)
println(s)
t := read_name(true) or (err) {
println(err.msg())
<< 1
}
println(t)
<< 0
}Build (from the language repo root; swap the binary for your platform):
xu run examples/05_errors/main.xu
# or: xu build examples/05_errors/main.xu
# default artifact is ./main on mac/linux, ./main.exe on Windows
Run from the separate examples repository root; source files live under examples/.