Когда блок finally не выполняется?

У нас есть конструкция для обработки исключений try/catch/finally. Говорят, что блок finally выполняется в любом случае, не зависимо от try/catch, но я слышала, что есть случаи, когда блок finally также не будет выполняться при определённых условиях...

В каких случаях блок finally не будет выполняться? Или это бред и он будет выполняться всегда?

Блок finally не будет выполняться, если:

1. Программа закрашится до того как будет вызван блок finally

2. До этого сработает команда выхода из программы

3. Бесконечный цикл в блоке try

4. Рекурсивное возвращение на начало блока try через оператор goto

Это наверное всё...