跳到主要内容
版本:master

try-catch 语句

语法

形式语法
1try { 语句列表 } catch (( 标识符 ))? { 语句列表 }
2catch { 语句列表 }

描述

try-catch 语句用于捕获和处理在作用域中执行的代码时可能发生的异常。它允许程序在遇到错误时继续运行,而不是终止协程。

try-catch 语句有两种形式:

  • 形式1:try 块后跟一个 catch

    try 块中放置可能引发异常的代码。如果在 try 块中发生异常,程序会跳转到对应的 catch 块执行。

    catch 块可以选择性地包含一个变量名,用于接收捕获的异常信息。如果提供了,可以在 catch 块内使用该参数来获取异常的详细信息。

    如果 try 块中的代码没有引发任何异常,则 catch 块不会被执行。

  • 形式2:单独的 catch

    catch 块中放置可能引发异常的代码,如果发生异常,程序会跳转到该 catch 块之后继续执行。

需要特别说明的是,即便异常被捕获,异常相关的调用栈信息仍然会被打印;这是正常现象。

示例

try
{
error("An error occurred!");
writeln("This line will not be executed."); // 这一行不会被执行
}
catch (e)
{
writeln("Caught an exception: ", e);
/*
输出:
Caught an exception: {
"error" : -1,
"msg" : "An error occurred!",
}
*/
}
// 继续执行后续代码
writeln("Program continues after exception handling.");

catch
{
writeln("This is a catch block without a try.");
error("An error occurred in catch!");
writeln("This line will not be executed."); // 这一行不会被执行
}
// 继续执行后续代码
writeln("Program continues after catch block.");