文档 / 教程
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/。