跳转至

异常处理

try {
  my_func1();
  my_func2();
} catch (Error &e) {
  cout e;
}

catch 抓取 try 的异常并处理。

与其他许多语言不同的是,try 块并不是必须的。
此时 catch 抓取上一个表达式的异常并处理。

my_func();
catch (Error &e) {
  cout e;
}

简写,上一个表达式末尾的分号可以不用添加。

my_func() catch (Error &e) {
  cout e;
}

空的 catch 块可以让程序忽略异常。
永远不要这么做

my_func() catch;

发生异常时请 throw 异常。

throw E"遇到异常"
throw Error("遇到异常")

也可以像调用函数那样写多个参数。

throw 1, 2, 3
throw(1, 2, 3)

就像所有 lumos 语句一样,throw 也是可求值的,其值恒为 void,但你永远也没法获取到 throw 求得的值