Throw [v1.1.04+]

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

Throw , Expression

参数

Expression

要保存到 catch 的 OutputVar 中的值.

由于此参数为表达式, 所以下面所有的例子都是有效的:

throw 3
throw "literal string"
throw MyVar
throw i + 1
throw { what: "Custom error", file: A_LineFile, line: A_LineNumber } ; 抛出一个对象

此参数总是为表达式, 所以变量引用不应该括在百分号中, 除非执行展开双重引用.

[v1.1.05+]: 如果省略, 则抛出带默认消息的 exception 对象.

Exception()

创建一个具有属性的对象, 这也是与运行时错误创建的异常所通用的:

Exception(Message , What, Extra)

此对象包含以下属性:

如果省略 What , 则它默认为当前函数或子程序的名称. 否则它可以为字符串或到调用堆栈顶部的负偏移. 例如, 使用值 -1 来设置 Exception.What 为当前函数或子线程名称, 且设置 Exception.LineException.File 为调用它的行号和文件. 不过, 如果这个脚本已经被编译或者偏移是无效的, What 将转换为一个字符串.

MessageExtra 被转换为字符串. 如果一个异常抛出而且没有被获取, 它们将在错误日志中显示.

try
    SomeFunction()
catch e
    MsgBox % "Error in " e.What ", which was called at line " e.Line 

SomeFunction() {
    throw Exception("Fail", -1)
}

相关

Try, Catch, Finally, OnError()

示例

请参阅 Try.