跳到主要内容
版本:release

异常捕获表达式

语法

描述

异常捕获表达式用于在表达式中捕获异常,并返回异常对象。当给定表达式在求值期间发生异常时, 异常将被此表达式捕获,程序将跳转到异常捕获表达式之后继续执行,而不会终止当前协程。

如果指定的表达式没有发生异常,则异常捕获表达式的值为 nil;否则将得到一个异常的描述信息:

writeln(catch(error("example")));
// 输出:
// { /* sizeof() == 2 */
// "error" : -1,
// "msg" : "example",
// }

可以通过判断异常捕获表达式的值是否为 nil 来确定指定表达式是否发生异常。

需要特别说明,GS 中即便捕获了异常,异常发生时的调用栈信息仍然会被获取和输出,这是正常现象。

示例

map msg = catch(error("example"));
if (msg != nil) {
writeln("Catched: ", msg["msg"]);
}