OnError() [v1.1.29+]

注册一个每当未处理错误发生时自动调用的函数.

OnError(Callback , AddRemove)

参数

Callback

要调用的函数或函数对象的名称. 若要传递原义的函数名称, 将其括在双引号中.

回调函数接受两个参数, 可以定义如下:

MyCallback(Exception) { ...

虽然给参数的名称并不重要, 但它被赋值为抛出值或 Exception 对象. 如果这是一个对象, 则可以修改它以影响默认错误对话框显示.

如果不需要相应的信息, 可以省略回调的参数.

回调可以返回一个非零的整数来阻止默认的错误对话框.

AddRemove

如果省略, 则默认为 1. 否则, 指定下列数字之一:

备注

Callback 只在出现错误或异常时才会被调用, 这些错误或异常通常会导致显示错误消息. 它不能被加载时错误调用, 因为 OnError 在脚本加载之后才能被调用.

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

在当前线程调用 Callback, 在其退出之前(即在调用堆栈展开之前).

Try, Catch, Throw, OnExit

示例

将脚本造成的错误记录到文本文件中, 而不是显示给用户.

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

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

与上面相同, 但使用函数对象.

OnError(LogError)
%cause% := error

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