返回介绍

Finally [v1.1.14+]

发布于 2020-11-08 02:37:57 字数 2174 浏览 1034 评论 0 收藏 0

确保在try语句后总是会执行的一个或多个语句(命令或表达式)。

Finally Statement
Finally
{
    Statements
}

备注

每次使用finally都必须附属于(与之关联)它上面的try(或catch)语句。finally总是附属于它上面且离它最近的无主try语句,不过可以使用区块改变这种行为。

如果finally语句使用在不含catch块的try语句中,则以后无法清除这里出现的异常且在finally语句执行后异常传播仍会继续。

不允许使用goto/break/continue退出finally语句,因为这样会中断异常传播(不过可以在区块中正常使用以确保持续执行)。在加载时会检测到这种错误(以及运行时的动态goto语句)。

One True Brace (OTB)风格可以用于finally命令中。例如:

try {
    ...
} finally {
    ...
}

try {
    ...
} catch e {
    ...
} finally {
    ...
}

相关

Try, Catch, Throw, 区块

示例

try
{
    ToolTip, Working...
    Example1()
}
catch e
{
    ; 关于e对象的更多细节,请参阅Catch
    MsgBox, 16,, % "Exception thrown!`n`nwhat: " e.what "`nfile: " e.file
        . "`nline: " e.line "`nmessage: " e.message "`nextra: " e.extra
}
finally
{
    ToolTip ; 隐藏工具提示
}

MsgBox, Done!; 此函数包含了清理代码的Finally区块
Example1()
{
    try
        Example2()
    finally
        MsgBox, This is always executed regardless of exceptions
}

; 分钟数为奇数时此函数执行时出错
Example2()
{
    if Mod(A_Min, 2)
        throw Exception("Test exception")
    MsgBox, Example2 did not fail
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文