Перейти к содержимому

Если исключение поймано — обязательна запись в ЖурналРегистрации с контекстом и ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()). «Молчаливые» исключения и серверные функции, которые на ошибке «тихо возвращают Ложь», запрещены. Сообщение пользователю локализуется и не заменяет запись в ЖР.

В блоке Исключение пробрасывайте ошибку через ВызватьИсключение; без параметра — так сохраняется исходный стек.

Перехват ставится там, где ошибку можно осмысленно обработать: на границе сценария (обработчик команды, фоновое задание, обработчик входящего сообщения), а не «на всякий случай» вокруг каждого вызова. Попытка без содержательной реакции в Исключение — это не обработка ошибок, а их сокрытие.

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

Ещё два частых анти-паттерна в блоке Исключение:

ОписаниеОшибки() не используйте и для логирования: в отличие от ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) оно не содержит стека вызовов и вложенных причин.

Текст, попадающий в ЖР из внешних источников, предварительно чистите от Символ(0) — см. NUL-байт ломает XML/XDTO и запись в ЖР.

Запись полезна ровно настолько, насколько по ней можно найти и воспроизвести проблему без доступа к отладчику:

Поле Требование
Имя события Устойчивое, с иерархией через точку: НСтр("ru='Загрузка данных.ДодоИс'") — по нему строится отбор в ЖР; не собирать имя из переменных
Уровень Ошибка — сбой сценария; Предупреждение — пропуск/деградация (строка отклонена, объект пропущен); Информация — итоги штатной работы
Данные Ссылка на объект-виновник — из события можно перейти к документу
Комментарий Контекст воспроизведения: внешний ключ, входные параметры, и всегда ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())

Для массовой обработки (загрузка, перепроведение) обязателен итог в ЖР: обработано N, отклонено M, причины отклонений — по записи уровня Предупреждение на пропуск и одна итоговая запись. «Обработка отработала без ошибок», потеряв треть строк молча, — худший из вариантов: инцидент всплывает через месяц сверкой. Как это выглядит в реальном конвейере — стадия «Итог в ЖР» в сквозном примере загрузки из ДодоИс; частный случай отказа (закрытый период) разобран в стандарте о дате запрета.

Ожидаемые «пустые» результаты, которые не являются ошибкой (например, объект не найден и это штатная ветка логики), не требуют записи в ЖР. Правило касается именно перехвата исключений.