, наконец, выполняется всегда, независимо от того, выброшено исключение или нет. Только если JVM отключается во время выполнения блока try или catch, предложение finally не будет выполнено. Аналогично, если поток, выполняющий код try или catch, прерывается или уничтожается, блок finally может не выполняться, даже если приложение в целом продолжается.