pascalabcnet/PABCNetHelp/LangGuide/ExceptionHandling/userExceptions.html

58 lines
2 KiB
HTML

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
<link rel="StyleSheet" href="../../default.css">
</head>
<body>
<H1>Èñêëþ÷åíèÿ, îïðåäåëÿåìûå ïîëüçîâàòåëåì</H1>
<p>Äëÿ îïðåäåëåíèÿ ñâîåãî òèïà èñêëþ÷åíèÿ äîñòàòî÷íî ïîðîäèòü êëàññ - íàñëåäíèê
êëàññà <code>Exception</code>:</p>
<blockquote>
<p><code><b>type</b> MyException =<b> class</b>(Exception) <b>end</b>;</code></p>
</blockquote>
<p>Òåëî êëàññà-èñêëþ÷åíèÿ ìîæåò áûòü ïóñòûì, íî, òåì íå ìåíåå, íîâîå èìÿ äëÿ
òèïà èñêëþ÷åíèÿ ïîçâîëèò åãî ðàçãðàíè÷èòü ñ îñòàëüíûìè èñêëþ÷åíèÿìè:</p>
<blockquote>
<p><code><b>try</b><br>
&nbsp; ...<br>
<b>except</b><br>
&nbsp; <b>on</b> MyException <b>do</b><br>&nbsp;&nbsp;&nbsp; writeln('Öåëî÷èñëåííîå
äåëåíèå íà 0');&nbsp; <br>&nbsp; <b>on</b> Exception <b>do</b><br><b>&nbsp;&nbsp;&nbsp;
</b>writeln('Ôàéë îòñóòñòâóåò');&nbsp;<br>
<b>end</b>;</code></p>
</blockquote>
<p>Èñêëþ÷åíèå ìîæåò ñîäåðæàòü äîïîëíèòåëüíóþ èíôîðìàöèþ, ñâÿçàííóþ ñ òî÷êîé, â
êîòîðîé ïðîèçîøëî èñêëþ÷åíèå:</p>
<blockquote>
<p><code><b>type</b> <br>
&nbsp; FileNotFoundException = <b>class</b>(Exception)<b><br>
</b>&nbsp;&nbsp;&nbsp; fname: <b>string</b>;<br>
<b>&nbsp; &nbsp; constructor</b> Create(msg,fn: <b>string</b>);<br>
<b>&nbsp;&nbsp;&nbsp; begin</b><br>
&nbsp; <b>&nbsp;&nbsp;&nbsp; inherited</b> Create(msg);<br>
&nbsp;&nbsp;&nbsp; &nbsp; fname := fn;<br>
<b>&nbsp;&nbsp;&nbsp; end</b>;<b><br>
&nbsp; end</b>;</code></p>
<p><code>...</code></p>
<p><code><b>procedure </b>ReadFile(fname: <b>string</b>);<br>
<b>begin</b><br>
&nbsp; <b>if</b> <b>not</b>
FileExists(fname) <b>then</b><br>
&nbsp;&nbsp;&nbsp; <b>raise</b> <b>new</b> FileNotFoundException('Ôàéë
íå íàéäåí',fname);<br>
<b>end</b>;</code></p>
<p><code>...</code></p>
<p><code><b>try</b><br>
&nbsp; ...<br>
<b>except</b><br>
&nbsp; <b>on</b> e: FileNotFoundException <b>do</b><br><b>&nbsp;&nbsp;&nbsp;
</b>writeln('Ôàéë '+e.fname+'
íå íàéäåí');&nbsp;<br>
<b>end</b>;</code></p>
</blockquote>
</body>
</html>