Finalmente, é sempre executado, não importa qual seja o seu caso.
- bloco try-catch-finalmente
- joga
Para exceções não verificadas, o java não exige, tratamento de erros. sendo esse o motivo, se ocorrer uma exceção desmarcada no bloco finalmente e não for feito nenhum tratamento para isso, o código escrito abaixo desse ponto (onde ocorreu o erro) não será executado.
Por isso, sugiro sempre lidar com todas as exceções, sejam marcadas ou desmarcadas. Dessa forma, você pode garantir que o bloco de código finalmente também seja executado, independentemente da ocorrência de exceção não verificada. você tem um lugar na captura de subninho e finalmente bloqueia para fazer o trabalho necessário.