# 错误处理 ## 功能 错误处理用于在脚本中主动抛出错误,并在外层捕获后继续执行。`throw` 会立即中断当前执行流,直到被最近的 `catch` 捕获;如果没有任何 `catch`,程序会以未捕获异常终止。 ## 语法 ```bt try { // 可能抛出错误的代码 } catch e { // e 是错误信息 } throw 'fatal' ``` ## 参数 - `try`:包裹需要捕获错误的代码块。 - `catch e`:捕获 `try` 中抛出的错误,`e` 是接收错误信息的变量名。 - `throw value`:抛出任意表达式的值,常见用法是抛出字符串错误信息。 ## 返回值 `try/catch` 也可以作为表达式使用。没有抛错时返回 `try` 代码块最后一条语句的值;捕获错误时返回 `catch` 代码块最后一条语句的值。 ## 代码示例 ```bt result = try { throw 'fatal' 'ok' } catch e { 'caught: ' + e } // 输出:caught: fatal print result ``` ## 注意事项 - `throw` 后面的同级代码不会继续执行。 - `throw` 可以穿过函数调用向外传播,直到被外层 `catch` 捕获。 - `catch` 变量按普通可变变量处理;当前 BT 没有块级作用域,因此不要在同一作用域中复用容易混淆的变量名。 - 未捕获的 `throw` 会终止程序,并显示未捕获异常信息。