Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦОО_ПОЭИС_Л2.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
134.66 Кб
Скачать

Безусловные переходы

Иногда необходимо принудительно передать управление в опре­деленную точку программы. Это реализуется с помощью метки и оператора Перейти. Метка может быть у любого исполняемого оператора. Она начинается со знака тильды («~»), далее идет имя метки, а затем двоеточие («:»), например:

н = 0;

Выборка = Справочники.Номенклатура.Выбрать();

Пока Выборка.Следующий() Цикл

н = н + 1;

Если н <= 10 Тогда

//пропускаем первые 10 элементов справочника

Перейти -след;

КонецЕсли;

Сообщить(Выборка.Наименование);

-след:

//возьмем следующий элемент

КонецЦикла;

С помощью оператора Перейти можно передавать управление в пределах процедуры/функции или в пределах раздела основной программы модуля. Заметьте, что этим способом нельзя выйти из процедуры или функции.

Чем меньше в вашей программе будет меток, тем лучше. Реко­мендуется применять метки только для перехода в конец цикла или процедуры. Для досрочного выхода из цикла рекомендуется применять оператор Прервать, а для перехода на следующий ви­ток цикла нужно применять оператор Продолжить. Оператор же Перейти будет полезен, если требуется выйти сразу из несколь­ких циклов.

Обработка исключений

«Попытка...Исключение»

Обработка исключений предназначена для перехвата ошибок (ис­ключительных ситуаций), возникающих в процессе работы про­граммы. Если возникла ошибка, и она не была перехвачена, то выдается системное сообщение об ошибке, и выполнение модуля прерывается.

Однако разработчик может перехватывать возникающие ошибки и обрабатывать их по своему усмотрению, например:

Попытка

СредняяЦена = СуммаВсего / Количество;

Исключение

//Возникла ошибка деления на ноль.

//Будем считать, что количество равно 1.

Количество = 1 ;

СредняяЦена = СуммаВсего;

КонецПопытки;

Чем меньше в вашей программе будет таких конструкций, тем лучше. Все потенциальные ошибки необходимо «отлавливать» по возможности еще до их возникновения. Конструкцию Попытка следует применять для внешних ошибок и при работе с базой дан­ных, т.е. для тех ошибок, которые не являются ошибкой написа­ния программы.

В следующем примере производится попытка записать файл, и если возникнет ошибка, то она будет перехвачена обработчиком исключений:

Попытка

ТекстФайл.Записать(ПутьКФайлу);

Исключение

Сообщить("Не удалось записать файл!");

КонецПопытки;

Внутри блока Исключение...КонецПопытки можно вызвать функцию ОписаниеОшибки, которая возвращает сообщение о возникшей ошибке в виде строки. Эту строку можно выдать в окно сообщений, записать в журнал регистрации или выполнить другие действия.

Кроме того, есть команда ВызватьИсключение, которая может применяться только внутри блока обработки исключения. Хотя программист и обработал ошибку, но он может ее пропустить (передать обработчику вышестоящего уровня), например, если она неисправима:

Попытка

СредняяЦена = СуммаВсего / Количество;

Исключение

Сообщить("Эх! Надо было проверить количество на ноль!");

Сообщить(ОписаниеОшибки());

ЗаписьЖурналаРегистрации(ОписаниеОшибки());

//хотя мы и обработали ошибку, но программу все равно прервем ВызватьИсключение;

КонецПопытки;

Обработчики исключений могут быть вложенными друг в друга. Если ошибка не обработана во внутреннем блоке Исключение...КонецПопытки, тогда она обрабатывается внеш­ним обработчиком, а если его нет, выдается системное сообщение об ошибке.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]