# 错误处理

## 功能
错误处理用于在脚本中主动抛出错误，并在外层捕获后继续执行。`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` 会终止程序，并显示未捕获异常信息。
