在 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 是非零整数,则线程退出而不调用以下处理程序并且不显示默认错误对话框。
我目前正在写一个读写文件的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 是非零整数,则线程退出而不调用以下处理程序并且不显示默认错误对话框。