try-catch 语句
语法
| 形式 | 语法 |
|---|---|
| 1 | try { 语句列表 } catch (( 标识符 ))? { 语句列表 } |
| 2 | catch { 语句列表 } |
描述
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.");