Что такое исключение?
Исключение — это особая ситуация, возникающая во время выполнения кода, которая нарушает нормальный ход программы. Примеры:
-
Деление на ноль.
-
Попытка обратиться к несуществующему элементу справочника.
-
Ошибка при записи файла на диск.
-
Отсутствие прав доступа.
Конструкция Попытка...Исключение...КонецПопытки
Это основной инструмент для перехвата и обработки ошибок в 1С.
bslПопытка // Код, в котором может произойти ошибка Числитель = 10; Знаменатель = 0; Результат = Числитель / Знаменатель; // Здесь возникнет исключение Исключение // Этот блок выполняется, если в блоке «Попытка» произошла ошибка Сообщить("Ошибка при вычислении: " + ОписаниеОшибки()); // Программа продолжит работу здесь, а не "упадет" КонецПопытки;
Объект ИнформацияОбОшибке
Более современный и мощный способ (доступен в платформе 8.3.6 и выше) — использование функции ИнформацияОбОшибке().
Попытка // Опасный код Документ.Объект.Записать(); Исключение Ошибка = ИнформацияОбОшибке(); // Анализируем ошибку Если Найти(Ошибка.Описание, "Нет прав") > 0 Тогда Сообщить("Отказано в доступе на запись документа!"); ИначеЕсли Ошибка.Причина <> "Undefined" Тогда // Логируем все остальные серьезные ошибки Сообщить("Критическая ошибка: " + Ошибка.Описание); // Или записать в журнал регистрации КонецЕсли; КонецПопытки;
Этот объект предоставляет детальную информацию:
-
Описание— текст ошибки. -
Причина— тип ошибки (например,ByQuery,ObjectFieldAccess). -
ПутьКИсточнику— имя модуля, где произошла ошибка.
Когда использовать?
-
Внешние операции: Работа с файлами, интернет-соединения, COM-объекты.
-
Действия пользователя: Обработка ввода, где возможна ошибка.
-
Сложные расчеты: Где результат может быть неопределенным.
-
Интеграции: При обмене данными с другими системами.
Важные правила и лучшие практики
-
Не прячьте ошибки. Обрабатывайте только те исключения, которые можете исправить. Бессмысленное подавление всех ошибок скроет реальные проблемы в коде.
-
Конкретность. Старайтесь обрабатывать только определенные типы ошибок, используя
ИнформацияОбОшибке(). -
Логируйте неизвестное. Если вы не знаете, как обработать ошибку, лучше залогируйте ее (в журнал регистрации) и повторно вызовите через
ВызватьИсключение. -
Блок
Исключение— не для основного кода. Основная логика должна быть в блокеПопытка.
Пример: Безопасное выполнение запроса
bslПопытка Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НекорректныйСинтаксис ИЗ | Справочник.Номенклатура"; Результат = Запрос.Выполнить(); // Здесь возможна ошибка Исключение Сообщить("Не удалось выполнить запрос. Проверьте его текст."); // В реальной системе здесь стоит записать ошибку в журнал Возврат; КонецПопытки; // Работаем с Результатом, если ошибки не было
Вывод: Грамотная обработка исключений — это признак зрелости разработчика. Она делает ваши конфигурации предсказуемыми, отказоустойчивыми и удобными для пользователей, которые больше не видят пугающих сообщений о "необработанных исключениях".

