在 AHK 中,Try/Catch 和 OnError() 有什么区别?什么时候使用一个或另一个?

In AHK, what is the difference between Try/Catch and OnError()? When to use one or the other?

我目前正在写一个读写文件的AHK脚本。 我想处理可能的 I/O 错误, 但是我不清楚文档关于 我是否应该使用 Try/Catch OnError().

两者有什么区别何时使用 一个或另一个?

所以,经过更多的研究,这是我的理解:

  • Try/Catch:用于:

    • 具体标识将应用它的特定代码行。
    • 然后,如果你愿意,继续执行。
    • A​​ Try/Catch 允许在失败的 Try 块之后继续执行命令。
    • (但是,Try/Catch 不允许在失败的命令之后继续执行命令 Try 块中。例如,如果包装了 5 个命令,那么如果第 2 个命令抛出,则在 Catch 块中执行某些操作后将无法从第 3 个命令继续执行。)
  • OnError():用它来

    • 处理任何未处理的错误。
    • 阻止(或不阻止)默认错误对话框。
    • 在任何情况下,线程执行都会在您处理错误后停止。
    • 可以同时激活多个 OnError() 处理程序, 并且您可以决定在发生错误时将以何种顺序执行它们(或在其中任何一个之后停止执行)。
    • If all handlers return 0 所有的handlers都被依次调用,然后显示默认的错误信息,然后线程退出。 如果任何处理程序 return 是非零整数,则线程退出而不调用以下处理程序并且不显示默认错误对话框。