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