Игнорирование исключений, которые происходят в блоке 'finally', как правило, является плохой идеей, если неизвестно, какими будут эти исключения и какие условия они будут представлять. В обычном try/finallyшаблоне использования tryблок переводит вещи в состояние, которого внешний код не ожидает, и finallyблок восстанавливает состояние этих вещей до того, что ожидает внешний код. Внешний код, который перехватывает исключение, обычно ожидает, что, несмотря на исключение, все было восстановлено доnormalштат. Например, предположим, что какой-то код запускает транзакцию, а затем пытается добавить две записи; блок «finally» выполняет операцию «откат, если не зафиксирован». Вызывающий может быть подготовлен к возникновению исключения во время выполнения второй операции «добавления» и может ожидать, что, если он уловит такое исключение, база данных будет в состоянии, в котором она была до попытки выполнения любой из этих операций. Если, однако, во время отката возникает второе исключение, могут произойти неприятности, если вызывающий объект сделает какие-либо предположения о состоянии базы данных. Ошибка отката представляет собой серьезную кризис, который не должен быть обнаружен кодом, ожидающим простого исключения «Не удалось добавить запись».
Лично я предпочитаю использовать метод finally, который будет перехватывать возникающие исключения и заключать их в «CleanupFailedException», признавая, что такой сбой представляет собой серьезную проблему, и такое исключение не следует воспринимать легкомысленно.