# OnError() [v1.1.29+]

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

    OnError(Func , AddRemove)

## 参数

Func

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

AddRemove

  如果为空或省略, 则默认为 1(在所有之前注册的函数之后调用该函数). 否则, 指定下列数字之一:

  - 1 = 在所有之前注册的函数之后调用该函数.
  - -1 = 在所有之前注册的函数之前调用该函数.
  - 0 = 不调用该函数.

## 备注

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

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

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

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

## 相关

Try, Catch, Throw, OnExit(), OnExit

## 示例

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

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

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

dftg