У меня есть оболочка, отвечающая за ведение журналов, с именем OperationWrapper. Его структура проста и выглядит следующим образом:
public void runOperation(Operation o) throws Exception{
logOperationStarted();
o.execute();
logOperationFinished();
}
Поскольку операция "o" может вызвать исключение, метод logOperationFinished()
будет вызываться не всегда, и, таким образом, ведение журнала будет работать некорректно.
Кроме того, эти исключения обрабатываются различными компонентами, вызывающими метод runOperation()
.
Желая гарантировать, что logOperationFinished()
будет работать всегда, я реализовал следующую структуру:
public void runOperation(Operation o) throws Exception{
logOperationStarted();
try{
o.execute();
}
catch(Exception e){
throw e;
}
finally{
logOperationFinished();
}
}
Теперь logOperationFinished()
работает всегда, но я получаю предупреждение от IntelliJ:
Перехваченное исключение создается немедленно повторно
Сообщает о любом блоке catch, в котором перехваченное исключение немедленно повторно создается без выполнения над ним каких-либо действий. Такие блоки catch не нужны или в них отсутствует обработка ошибок.
Мне кажется, что IntelliJ не учитывает блок finally при выдаче этого предупреждения.
Я делаю что-то не так или есть лучший способ добиться этого?
Спасибо.
Exception
— избегайте этого, где можете.) - person Makoto   schedule 07.04.2015