Перейти к содержанию

Отсутствие логирования ошибки

Недопустимо перехватывать любые исключения бесследно для системного администратора. Как правило, подобная конструкция скрывает реальную проблему, которую впоследствии невозможно диагностировать.

Неправильно:

Попытка
    // код, приводящий к вызову исключения
    ....
Исключение // перехват любых исключений
КонецПопытки;

Правильно:

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

Если имеется некоторая клиентская бизнес-логика (код выполняется полностью на клиенте), то рекомендуется делать дополнительный серверный вызов для протоколирования неудачного результата операции в журнал регистрации:

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

&НаСервереБезКонтекста
Процедура ЗаписатьОшибкуРаботыСФайлами(...)
    ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"),
       УровеньЖурналаРегистрации.Ошибка,,,
       ПодробноеПредставлениеОшибки);
КонецПроцедуры

Особенности

  • Параметр exclusions позволяет указать через запятую список имен методов, осуществляющих запись в журнал регистрации, если в проекте для логирования используются процедуры общих модулей или менеджеров. Процедура БСП ДобавитьСообщениеДляЖурналаРегистрации внесена в настройку по умолчанию.

См. также

Экранирование кода

// sonar:ExceptWithoutLog:off
// sonar:ExceptWithoutLog:on