<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>1C-Book &#187; Обработка исключений</title>
	<atom:link href="http://1c-book.ru/category/razrabotka-v-sisteme-1spredpriyatie-8-0-s-a-mitichkin-ooo-1s-pablishing-2003g/obrabotka-isklyuchenij/feed/" rel="self" type="application/rss+xml" />
	<link>http://1c-book.ru</link>
	<description>1С Предприятие 8.0. Справочно-Информационная Система</description>
	<lastBuildDate>Wed, 04 Nov 2009 12:01:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Обработка исключений</title>
		<link>http://1c-book.ru/obrabotka-isklyuchenij/</link>
		<comments>http://1c-book.ru/obrabotka-isklyuchenij/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 12:55:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Обработка исключений]]></category>

		<guid isPermaLink="false">http://1c-book.ru/?p=79</guid>
		<description><![CDATA[ 
Конструкция «Попытка&#8230;Исключение» 
Обработка исключений предназначена для перехвата ошибок   (исключительных ситуаций), возникающих в процессе работы программы. Если   возникла ошибка, и она не была перехвачена, то выдается системное сообщение об   ошибке, и выполнение модуля прерывается.
Однако разработчик может перехватывать возникающие ошибки и   обрабатывать их по своему усмотрению, например:



Попытка 




 [...]]]></description>
			<content:encoded><![CDATA[<p><em> </em></p>
<p align="left"><span style="text-decoration: underline;"><em><strong>Конструкция «Попытка&#8230;Исключение» </strong></em></span></p>
<p align="left">Обработка исключений предназначена для перехвата ошибок   (исключительных ситуаций), возникающих в процессе работы программы. Если   возникла ошибка, и она не была перехвачена, то выдается системное сообщение об   ошибке, и выполнение модуля прерывается.</p>
<p align="left">Однако разработчик может перехватывать возникающие ошибки и   обрабатывать их по своему усмотрению, например:</p>
<dl>
<dd>
<div>
<pre><span style="color: #008000;">Попытка </span></pre>
</div>
</dd>
<dd>
<div>
<pre><span style="color: #008000;">    СредняяЦена = СуммаВсего / Количество; </span></pre>
</div>
</dd>
<dd>
<div>
<pre><span style="color: #008000;">Исключение</span></pre>
</div>
</dd>
<dd>
<div>
<pre>    <em><span style="color: #008000;">//Возникла ошибка деления на ноль.</span></em></pre>
<p><span style="color: #008000;"> </span></div>
<p><span style="color: #008000;"> </span></dd>
<dd> <span style="color: #008000;"> </span></p>
<div><span style="color: #008000;"> </span></p>
<pre><span style="color: #008000;"><em><span style="color: #008000;">    //Будем считать, что количество равно 1.</span></em></span></pre>
<p><span style="color: #008000;"><span style="color: #008000;"> </span></span></div>
<p><span style="color: #008000;"><span style="color: #008000;"> </span></span></dd>
<dd> <span style="color: #008000;"><span style="color: #008000;"> </span></span></p>
<div><span style="color: #008000;"><span style="color: #008000;"> </span></span></p>
<pre><span style="color: #008000;"><span style="color: #008000;">    Количество = 1;</span></span></pre>
<p><span style="color: #008000;"><span style="color: #008000;"> </span></span></div>
<p><span style="color: #008000;"><span style="color: #008000;"> </span></span></dd>
<dd> <span style="color: #008000;"><span style="color: #008000;"> </span></span></p>
<div><span style="color: #008000;"><span style="color: #008000;"> </span></span></p>
<pre><span style="color: #008000;"><span style="color: #008000;">    СредняяЦена = СуммаВсего; </span></span></pre>
<p><span style="color: #008000;"><span style="color: #008000;"> </span></span></div>
<p><span style="color: #008000;"><span style="color: #008000;"> </span></span></dd>
<dd> <span style="color: #008000;"><span style="color: #008000;"> </span></span></p>
<div><span style="color: #008000;"><span style="color: #008000;"> </span></span></p>
<pre><span style="color: #008000;"><span style="color: #008000;">КонецПопытки;</span></span></pre>
<p><span style="color: #008000;"><span style="color: #008000;"> </span></span></div>
<p><span style="color: #008000;"><span style="color: #008000;"> </span></span></dd>
</dl>
<p align="left">Чем меньше в вашей программе будет таких конструкций, тем лучше.   Все потенциальные ошибки необходимо «отлавливать» по возможности еще до их   возникновения. Конструкцию Попытка следует применять для внешних ошибок   и при работе с базой данных, т.е. для тех ошибок, которые не являются ошибкой   написания программы.</p>
<p align="left">В следующем примере производится попытка записать файл, и если   возникнет ошибка, то она будет перехвачена обработчиком исключений:</p>
<dl>
<dd>
<div>
<pre><span style="color: #008000;">Попытка</span></pre>
</div>
</dd>
<dd>
<div>
<pre><span style="color: #008000;">    ТекстФайл.Записать(ПутьКФайлу);</span></pre>
</div>
</dd>
<dd>
<div>
<pre><span style="color: #008000;">Исключение</span></pre>
</div>
</dd>
<dd>
<div>
<pre><span style="color: #008000;">    Сообщить("Не удалось записать файл!");</span></pre>
</div>
</dd>
<dd>
<div>
<pre><span style="color: #008000;">КонецПопытки;</span></pre>
</div>
</dd>
</dl>
<p align="left">Внутри блока Исключение&#8230;КонецПопытки можно вызвать функцию   ОписаниеОшибки, которая возвращает сообщение о возникшей ошибке в виде строки.   Эту строку можно выдать в окно сообщений, записать в журнал регистрации или   выполнить другие действия.</p>
<p align="left">Кроме того, есть команда ВызватьИсключение, которая может   применяться только внутри блока обработки исключения. Хотя программист и   обработал ошибку, но он может ее пропустить (передать обработчику вышестоящего   уровня), например, если она неисправима:</p>
<dl><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;">
<dd>
<div>
<pre>Попытка</pre>
</div>
</dd>
<dd>
<div>
<pre>        СредняяЦена = СуммаВсего / Количество;</pre>
</div>
</dd>
<dd>
<div>
<pre>    Исключение</pre>
</div>
</dd>
<dd>
<div>
<pre>        Сообщить("Эх! Надо было проверить количество на ноль!");</pre>
</div>
</dd>
<dd>
<div>
<pre>        Сообщить(ОписаниеОшибки());</pre>
</div>
</dd>
<dd>
<div>
<pre> ЗаписьЖурналаРегистрации(ОписаниеОшибки());</pre>
</div>
</dd>
<dd>
<div>
<pre>        //хотя мы и обработали ошибку, но программу все равно прервем</pre>
</div>
</dd>
<dd>
<div>
<pre>    ВызватьИсключение;</pre>
</div>
</dd>
<dd>
<div>
<pre>КонецПопытки;</pre>
</div>
</dd>
<p></span></span></span></dl>
<p align="left">Обработчики исключений могут быть вложенными друг в друга. Если   ошибка не обработана во внутреннем блоке Исключение&#8230;КонецПопытки, тогда она   обрабатывается внешним обработчиком, а если его нет, выдается системное   сообщение об ошибке.</p>
]]></content:encoded>
			<wfw:commentRss>http://1c-book.ru/obrabotka-isklyuchenij/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
