XU XUv0.8.8
EN

文档 / 教程

05 · 错误处理

不要 Result / Ok / Err / ?。>> expr 抛出 errors.Error;调用处 or (err) { } 接住。

源码

@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
}

编译(examples 仓库根,使用已安装的 xu):

xu run examples/05_errors/main.xu
# 或:xu build examples/05_errors/main.xu
# mac/linux 默认写出 ./main ;Windows 为 ./main.exe

在独立的 examples 仓库根执行;源码位于 examples/。