<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1632085368384154" crossorigin="anonymous"></script><script src="https://autohotkey.top/gtag.js"></script></head> <body> <h1>Finally</h1> <p>确保在 <a href="Try.htm">Try</a> 语句完成之后总是执行一条或多条语句.</p> <pre class="Syntax"><span class="func">Finally</span> <i>Statement</i></pre> <pre class="Syntax" style="line-height: 100%"><span class="func">Finally</span> { <i>语句</i> }</pre> <h2 id="Remarks">备注</h2> <p>每次使用 <em>finally</em> 都必须附属于(与之关联) 它上面的 <a href="Try.htm">try</a> 语句(在任何可选的 <a href="Catch.htm">catch</a> 和/或 <a href="Else.htm">else</a> 之后). <em>finally</em> 总是附属于它上面且离它最近的无主 <em>try</em> 语句, 不过可以使用<a href="Block.htm">区块</a>改变这种行为.</p> <p><em>Try</em> 语句的行为取决于 <em>catch</em> 或 <em>finally</em> 是否存在. 有关详情, 请参阅 <a href="Try.htm">Try</a>.</p> <p>不能使用 <em>Goto</em>, <em>break</em>, <em>continue</em> 和 <em>return</em> 退出 <em>finally</em> 区块, 因为这需要在 <em>try</em> 区块里禁止任何控制流指令. 例如, 如果 <em>try</em> 语句中使用 <code>return 42</code>, 值 42 将会在 finally 区块执行后被返回. 如果使用上述语句之一来试图跳出 <em>finally</em> 区块, 将会在加载时或运行时被检测为错误.</p> <p>如果脚本被任何方式直接终止, 包括托盘菜单, <a href="ExitApp.htm">ExitApp</a>, <em>Finally</em> 语句不会被执行.</p> <p>可以在 <em>finally</em> 语句中使用 <a href="Block.htm#otb">One True Brace(OTB) 样式</a>. 例如:</p> <pre>try { ... } finally { ... } try { ... } catch { ... } else { ... } finally { ... }</pre> <h2 id="Related">相关</h2> <p><a href="Try.htm">Try</a>, <a href="Catch.htm">Catch</a>, <a href="Else.htm">Else</a>, <a href="Throw.htm">Throw</a>, <a href="Block.htm">区块</a></p> <h2 id="Examples">示例</h2> <div class="ex" id="ExBasic"> <p><a class="ex_number" href="#ExBasic"></a> 详细演示 <em>finally</em> 的行为.</p> <pre>try { ToolTip "Working..." Example1() } catch as e { <em>; 关于 e 对象的更多细节, 请参阅 <a href="../objects/Error.htm">Error</a>.</em> MsgBox(Type(e) " thrown!`n`nwhat: " e.what "`nfile: " e.file . "`nline: " e.line "`nmessage: " e.message "`nextra: " e.extra,, 16) } finally { ToolTip <em>; 隐藏工具提示</em> } MsgBox "Done!" <em>; 此函数包含了清理代码的 Finally 区块</em> Example1() { try Example2() finally MsgBox "This is always executed regardless of exceptions" } <em>; 当系统分钟数为奇数时此函数执行会报错</em> Example2() { if Mod(A_Min, 2) throw Error("That's odd...") MsgBox "Example2 did not fail" }</pre> </div> <a href="https://dftg.net">dftg</a><!-- Cloudflare Pages Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "d5a9c4fcb9b6482fa53ce820d892f969"}'></script><!-- Cloudflare Pages Analytics --><script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"rayId":"94ed62322a51ab9c","version":"2025.6.2","r":1,"serverTiming":{"name":{"cfExtPri":true,"cfEdge":true,"cfOrigin":true,"cfL4":true,"cfSpeedBrain":true,"cfCacheStatus":true}},"token":"51750bb5dc4f40cc91a5ec55c63bbc01","b":1}' crossorigin="anonymous"></script> </body> </html>