58 lines
2.4 KiB
HTML
58 lines
2.4 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>
|
||
...<br>
|
||
<b>except</b><br>
|
||
<b>on</b> MyException <b>do</b><br> writeln('Целочисленное
|
||
деление на 0'); <br> <b>on</b> Exception <b>do</b><br><b>
|
||
</b>writeln('Файл отсутствует'); <br>
|
||
<b>end</b>;</code></p>
|
||
</blockquote>
|
||
<p>Исключение может содержать дополнительную информацию, связанную с точкой, в
|
||
которой произошло исключение:</p>
|
||
<blockquote>
|
||
<p><code><b>type</b> <br>
|
||
FileNotFoundException = <b>class</b>(Exception)<b><br>
|
||
</b> fname: <b>string</b>;<br>
|
||
<b> constructor</b> Create(msg,fn: <b>string</b>);<br>
|
||
<b> begin</b><br>
|
||
<b> inherited</b> Create(msg);<br>
|
||
fname := fn;<br>
|
||
<b> end</b>;<b><br>
|
||
end</b>;</code></p>
|
||
<p><code>...</code></p>
|
||
<p><code><b>procedure </b>ReadFile(fname: <b>string</b>);<br>
|
||
<b>begin</b><br>
|
||
<b>if</b> <b>not</b>
|
||
FileExists(fname) <b>then</b><br>
|
||
<b>raise</b> <b>new</b> FileNotFoundException('Файл
|
||
не найден',fname);<br>
|
||
<b>end</b>;</code></p>
|
||
<p><code>...</code></p>
|
||
<p><code><b>try</b><br>
|
||
...<br>
|
||
<b>except</b><br>
|
||
<b>on</b> e: FileNotFoundException <b>do</b><br><b>
|
||
</b>writeln('Файл '+e.fname+'
|
||
не найден'); <br>
|
||
<b>end</b>;</code></p>
|
||
</blockquote>
|
||
</body>
|
||
|
||
</html> |