<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>Catch</h1> <p>指定在 <a href="Try.htm">try</a> 语句执行期间如果抛出值或错误时要执行的代码.</p> <pre class="Syntax" style="line-height: 120%"><span class="func">Catch</span> <span class="optional">ErrorClass</span> <span class="optional"><span class="func">as</span> OutputVar</span> { <i>语句</i> }</pre> <h2 id="Parameters">参数</h2> <dl> <dt>ErrorClass</dt> <dd> <p>类型: <a href="../objects/Class.htm">Class</a></p> <p>应该被捕获的值的类, 如 <code>Error</code>, <code>TimeoutError</code> 或 <code>MyCustomError</code>. 这也可以是一个以逗号分隔的类的列表. 类必须由其确切的全名指定, 而不是任意的表达式, 因为每个类的<a href="../objects/Class.htm#Prototype">原型</a>在加载时被解析. 任何<a href="../objects/index.htm">内置的</a>或<a href="../Objects.htm#Custom_Classes">用户定义的</a>类都可以被使用, 即使它不是从 <a href="../objects/Error.htm">Error</a> 派生的.</p> <p>如果没有指定类, 默认是 <code>Error</code>.</p> <p>要捕捉任何类, 请使用 <code>Catch Any</code>.</p> <p>如果使用了无效的类名, 或者由于存在同名的局部变量而无法访问一个类, 则会显示加载时错误.</p> </dd> <dt>OutputVar</dt> <dd> <p>类型: <a href="../Concepts.htm#variables">变量</a></p> <p>存储抛出值的变量, 这通常是一个 <a href="../objects/Error.htm">Error 对象</a>. 这不能是一个<a href="../Language.htm#dynamic-variables">动态变量</a>.</p> <p>如果省略, 抛出的值不能被直接访问, 但仍然可以通过使用没有参数的 <a href="Throw.htm">Throw</a> 来重新抛出.</p> </dd> <dt><i>Statement(s)</i></dt> <dd> <p>抛出值或错误时执行的<a href="../Concepts.htm#statement">语句</a>.</p> <p>如果只使用一个语句, 一般不需要大括号. 有关详情, 请参阅 <a href="Block.htm">{...} (block)</a>.</p> </dd> </dl> <h2 id="Remarks">备注</h2> <p>多个 <em>catch</em> 语句可以一个接一个地使用, 每个语句指定一个不同的类(或多个类). 如果值不是任何一个列出的类的实例, 它就不会被这个 <em>try-catch</em> 捕获, 但可能会被调用堆栈中更高的一个捕获.</p> <p><em>catch</em> 的每次使用都必须附属于(与之关联) 它上面的 <a href="Try.htm">try</a> 语句. <em>catch</em> 总是附属于它上面最近的未被认领的 <em>try</em> 语句, 除非使用<a href="Block.htm">区块</a>来改变这种行为.</p> <p>参数列表可以选择括在括号中, 在这种情况下, <code>Catch</code> 后的空格或制表符是可选的.</p> <p><em>Catch</em> 后面可以有 <a href="Else.htm">else</a>, 如果在相关的 try 块中没有抛出异常, 则执行 else.</p> <p>可选使用 <a href="Block.htm#otb">One True Brace(OTB) 样式</a>. 例如:</p> <pre>try { ... } catch Error { ... }</pre> <p>加载时错误不能被捕获, 因为它们发生在 <em>try</em> 语句执行之前.</p> <p>存储在 <em>OutputVar</em>(如果存在) 中的值是一个 <a href="../objects/Error.htm">Error</a> 对象(Error 类或子类的一个实例).</p> <h2 id="Related">相关</h2> <p><a href="Try.htm">Try</a>, <a href="Throw.htm">Throw</a>, <a href="../objects/Error.htm">Error 对象</a>, <a href="Else.htm">Else</a>, <a href="Finally.htm">Finally</a>, <a href="Block.htm">区块</a>, <a href="OnError.htm">OnError</a></p> <h2 id="Examples">示例</h2> <p>请参阅 <a href="Try.htm#Examples">Try</a>.</p> <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":"93cdaa1faab70009","version":"2025.4.0-1-g37f21b1","r":1,"serverTiming":{"name":{"cfExtPri":true,"cfL4":true,"cfSpeedBrain":true,"cfCacheStatus":true}},"token":"51750bb5dc4f40cc91a5ec55c63bbc01","b":1}' crossorigin="anonymous"></script> </body> </html>