# Throw

发生错误时发出信号. 此信号可以被 Try-Catch 语句捕获.

    Throw Value

## 参数

Value

  要抛出的值; 通常是一个 Error 对象. 例如:

      throw ValueError("Parameter #1 invalid", -1, theBadParam)

  所有类型的值都可以被抛出, 但是如果使用 Catch 而不指定一个类(或者使用 Try 而不使用 Catch 或 Finally), 它将只捕获 Error 类的实例.

  当在 Catch 中执行时, 可以省略 Value 来重新抛出捕获的值(避免仅为此目的指定一个输出变量). 这甚至在嵌套的 Try-Finally 中也支持, 但在嵌套的 Try-Catch 中不支持. 带有 `Throw` 的行不需要被 Catch 语句的主体所包含; 它可以被调用的函数所使用.

## 备注

如果表达式被括在括号中, 则 `throw` 后的空格或制表符是可选的 , 如 `throw(Error())` 所示.

一个抛出的值或运行时错误可以被 Try-Catch 捕获. 在这种情况下, 执行被转移到 catch 语句或 try 之后的下一个语句. 如果一个抛出的值没有被捕获, 会发生以下情况:

- 任何激活的 OnError 回调都会被调用. 每个回调可以检查 Value 并抑制或允许进一步的回调和默认处理.
- 默认情况下, 会根据抛出的内容显示错误信息. 如果 Value 是一个对象, 并且拥有一个名为 Message 的值属性, 那么它的值将被用作消息. 如果 Value 是一个非数字字符串, 则使用它作为消息. 在任何其他情况下, 都会使用一个默认的消息. 如果 Value 是数字, 则显示在默认消息的下方.
- 线程退出. 请注意, 这不一定发生在可持续的错误上, 但 throw 永远是不可持续的.

## 相关

Error 对象, Try, Catch, Finally, OnError

## 示例

请参阅 Try.

dftg