Throw

AutoHotKey

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(Message [, What, Extra])

创建一个包含下列属性的对象, 跟运行时错误创建的异常一样:

  • Message: 错误消息或 ErrorLevel 值.
  • What: 错误发生时正在或即将执行的命令或函数的名称.
  • Extra: 错误的额外信息.
  • File: 包含发生错误的语句的脚本文件的完整路径.
  • Line: 发生错误的语句行号.

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

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

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

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

相关

Try, Catch, Finally

示例

请参阅 Try.