Catch

指定在 Try 语句执行期间如果抛出值或错误时要执行的一或多条语句.

Catch ErrorClass as OutputVar
{
    语句
}

参数

ErrorClass

类型: Class

应该被捕获的值的类, 如 Error, TimeoutErrorMyCustomError. 这也可以是一个以逗号分隔的类的列表. 类必须由其确切的全名指定, 而不是任意的表达式, 因为每个类的原型在加载时被解析. 任何内置的用户定义的类都可以被使用, 即使它不是从 Error 派生的.

如果没有指定类, 默认是 Error.

要捕捉任何类, 请使用 Catch Any.

如果使用了无效的类名, 或者由于存在同名的局部变量而无法访问一个类, 则会显示加载时错误.

OutputVar

类型: 变量

存储抛出值的变量, 这通常是一个 Error 对象. 这不能是一个动态变量.

如果省略, 抛出的值不能被直接访问, 但仍然可以通过使用没有参数的 Throw 来重新抛出.

Statement(s)

抛出值或错误时执行的语句.

如果只使用一个语句, 一般不需要大括号. 有关详情, 请参阅 {...} (block).

备注

多个 Catch 语句可以一个接一个地使用, 每个语句指定一个不同的类(或多个类). 如果值不是任何一个列出的类的实例, 它就不会被这个 Try-Catch 捕获, 但可能会被调用堆栈中更高的一个捕获.

Catch 的每次使用都必须附属于(与之关联) 它上面的 Ty 语句. Catch 总是附属于它上面最近的未被认领的 Try 语句, 除非使用区块来改变这种行为.

参数列表可以选择括在括号中, 在这种情况下, catch 后的空格或制表符是可选的.

Catch 后面可以有 Else, 如果在相关的 Try 块中没有抛出异常, 则执行 Else.

可选使用 One True Brace(OTB) 样式. 例如:

try {
    ...
} catch Error {
    ...
}

加载时错误不能被捕获, 因为它们发生在 try 语句执行之前.

Try, Throw, Error 对象, Else, Finally, 区块, OnError

示例

请参阅 Try.