Конструкция «Попытка...Исключение»
Обработка исключений предназначена для перехвата ошибок (исключительных ситуаций), возникающих в процессе работы программы. Если возникла ошибка, и она не была перехвачена, то выдается системное сообщение об ошибке, и выполнение модуля прерывается.
Однако разработчик может перехватывать возникающие ошибки и обрабатывать их по своему усмотрению, например:
Попытка
СредняяЦена = СуммаВсего / Количество;
Исключение
//Возникла ошибка деления на ноль.
//Будем считать, что количество равно 1.
Количество = 1;
СредняяЦена = СуммаВсего;
КонецПопытки;
Чем меньше в вашей программе будет таких конструкций, тем лучше. Все потенциальные ошибки необходимо «отлавливать» по возможности еще до их возникновения. Конструкцию Попытка следует применять для внешних ошибок и при работе с базой данных, т.е. для тех ошибок, которые не являются ошибкой написания программы.
В следующем примере производится попытка записать файл, и если возникнет ошибка, то она будет перехвачена обработчиком исключений:
Попытка
ТекстФайл.Записать(ПутьКФайлу);
Исключение
Сообщить("Не удалось записать файл!");
КонецПопытки;
Внутри блока Исключение...КонецПопытки можно вызвать функцию ОписаниеОшибки, которая возвращает сообщение о возникшей ошибке в виде строки. Эту строку можно выдать в окно сообщений, записать в журнал регистрации или выполнить другие действия.
Кроме того, есть команда ВызватьИсключение, которая может применяться только внутри блока обработки исключения. Хотя программист и обработал ошибку, но он может ее пропустить (передать обработчику вышестоящего уровня), например, если она неисправима:
Попытка
СредняяЦена = СуммаВсего / Количество;
Исключение
Сообщить("Эх! Надо было проверить количество на ноль!");
Сообщить(ОписаниеОшибки());
ЗаписьЖурналаРегистрации(ОписаниеОшибки());
//хотя мы и обработали ошибку, но программу все равно прервем
ВызватьИсключение;
КонецПопытки;
Обработчики исключений могут быть вложенными друг в друга. Если ошибка не обработана во внутреннем блоке Исключение...КонецПопытки, тогда она обрабатывается внешним обработчиком, а если его нет, выдается системное сообщение об ошибке. матрац ортопедический . восстановление raid