pascalabcnet/PABCNetHelp/LangGuide/Operators/try_finally.html

56 lines
2.2 KiB
HTML

<html>
<head>
<object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
<param name="Keyword" value="try">
<param name="Keyword" value="finally">
</object>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
<link rel="StyleSheet" href="../../default.css">
</head>
<body>
<H1>Оператор try
... finally</H1>
<p>Оператор <code><b>try</b></code> ... <code><b>finally</b></code> имеет вид:</p>
<blockquote>
<p><code><b>try</b></code><code><b><br>
&nbsp; </b></code><i>операторы</i><br>
<code><b>finally</b></code><br>
<code><b>&nbsp; </b></code><i>операторы</i><br>
<code><b>end</b>; </code></p>
</blockquote>
<p>Операторы в блоке <b><code>finally</code></b>
выполняются безотносительно к тому, возникло или нет исключение
в блоке <b><code>try</code></b>. При этом само исключение
не обрабатывается.</p>
<p>Блок <b><code>finally</code></b>
используется для возвращения ранее выделенных ресурсов. </p>
<p><b>Пример 1.</b> Закрытие открытого файла.</p>
<blockquote>
<p><code>reset(f);<b><br>
try</b></code><code><b><br>
&nbsp; </b>...</code><br>
<code><b>finally</b></code><br>
<code>&nbsp; close(f);<b>&nbsp; </b></code>
<br>
<code><b>end</b>; </code></p>
</blockquote>
<p>Файл будет закрыт независимо от того, произошло ли ислючение
в блоке <b><code>try</code></b>.</p>
<p><b>Пример 2.</b> Возвращение выделенной динамической памяти.</p>
<blockquote>
<p><code>New(p);<b><br>
try<br>
&nbsp; </b>...</code><br>
<code><b>finally</b></code><br>
<code>&nbsp; Dispose(p);</code><br>
<code><b>end</b>; </code></p>
</blockquote>
<p>Динамическая память, контролируемая указателем <code>p</code>,
будет возвращена независимо от того, произошло ли ислючение в блоке <b>
<code>try</code></b>.</p>
</body>
</html>