XU XUv0.8.8
中文

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/.