Цитата из описания правила (SonarQube 4.5.5):Почему squid: S1166 не принимает сообщения об исключениях только при регистрации исключенных исключений?
// Noncompliant - exception is lost (only message is preserved)
try { /* ... */ }
catch (Exception e) { LOGGER.info(e.getMessage()); }
Предоставляя класс исключения к регистратору трассирование записывается в журнал.
Проблемы в нашей базе коды заключается в следующем: Следуя принцип Tell, don't ask мы используем проверяемые исключения как часть, что мы считаем, нормальные путями выполнения, и мы не хотим, чтобы привести к неоправданно большим журнальным сообщениям ,
Несколько примеров: Сервера реагирующих с кодами ошибок, заявление базы данных расстрелами неудовлетворительных на оптимистической блокировке (одновременные пользователи) ...
Моего предложение: Разделить этот случай в два.
// Noncompliant - exception is lost (only message is preserved)
try { /* ... */ }
catch (Exception e) { LOGGER.info(e.getMessage()); }
и
// Compliant - exception is lost (only message is preserved) but there is business logic handling the situation
try {
/* ... */
} catch (Exception e) {
LOGGER.info(e.getMessage());
*/ exception handling */
}
Правило кальмар: S00108 (блоки кода не должны быть пустыми) не выявит проблему, так как есть регистрация заявление.
Разве это не разумно? Я пропустил что-то важное?
Примечание: Я переписал вопрос прояснить мой случай использования
Я нахожу правило действительного (для большинства случаев) и хочет сохранить его, в противном случае я бы не стал утруждать писать пост об этом. Приложение является довольно большим (~ 200 000 строк кода) и записывает много полезной информации о сеансах пользователя, но когда пользователь делает что-то, что может вызвать проверенное исключение (которое обрабатывается изящно приложением), регистратор необоснованно затоплен. Конечно, я мог бы зарегистрировать все на более низком уровне журнала, чтобы избежать нарушения правил, но это заставило бы меня во все эти перезаписи только ради правила, с которым я не согласен. – Alix
Мы говорим о конкретных типах исключений, которые, возможно, правило должно игнорировать, @Alix? –
Я не думаю, что определение такого списка поможет, поскольку пользовательские классы исключений являются общими, а иногда возникают из фреймворков, а не из стандартной библиотеки. – Alix