Новое правило "Пустой блок обработки исключения"

sonar-bsl-plugin

#1

Конструкция “Попытка…Исключение…КонецПопытки” не содержит код обработки исключения.

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

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

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

Правильно:

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

См. также
Перехват исключений в коде

И результаты проверки на коде не самой старой версии БСП - аж 38 раз

Везде написан очень короткий комментарий, почему так сделано, хотя по стандарту выше этого недостаточно :slight_smile:


#2

Или вот этот маскирование исключения

или другой вариант

В обоих случаях комментария явно недостаточно.

и так далее


#3

А на СППР более 50 замечаний :frowning:


#4

@Vladislav_Moroz Обрати внимание :slight_smile:


#5

а чем это отличается от предыдущего правила про пустой блок внутри операторных скобок?
текстом сообщения?


#6

Критичностью


#7

У нас в правиле “Пустой блок” неожиданно есть условие “если в блоке исключения есть хоть какой-то комментарий, то правило не сработает”

для блока исключения это не очень хорошо, тут я согласен со стандартом и наше новое правило комментарии не учитывает.