OnError() [v1.1.29+]

指定一个在未处理错误发生时自动运行的函数.

OnError(Func , AddRemove)

参数

Func

当未处理的错误发生时调用的函数名或函数对象. 该函数将异常对象作为参数, 并可能返回一个非零的整数来阻止默认的错误对话框.

AddRemove

下列值之一:
1(默认): 在所有之前注册的函数之后调用该函数.
-1: 在所有之前注册的函数之前调用该函数.
0: 不调用该函数.

备注

Func 只会被调用来处理通常会导致显示错误消息的错误或异常. 加载时的错误无法调用, 因为在加载脚本完毕之前无法调用 OnError.

如果任何错误函数返回一个非零整数, 则线程退出. 如果在错误函数中发生错误(或抛出异常), 则会为新错误显示错误消息并退出线程. 否则, 将调用整个错误函数, 显示错误消息并退出该线程.

Func 的第一个参数接收抛出的值或 Exception(异常) 对象. 如果是一个对象, 可以修改它来影响默认的错误对话框显示的内容.

Func 在当前线程中被调用, 在线程退出之前(即在调用堆栈展开之前).

相关

Try, Catch, Throw, OnExit

示例

#1

OnError("LogError")
%cause% := error

LogError(exception) {
    FileAppend % "Error on line " exception.Line ": " exception.Message "`n"
        , errorlog.txt
    return true
}