try - catch и finally используются для избежания ситуаций, когда программа может быть остановлена из-за возникновения нежелательной ошибки во время выполнения программы.
Следующие пункты важны ....
1) Для блока есть только одна попытка ...... любое количество операторов catch для блока и только один, наконец, для блока статистики
2), наконец, опционально.
3) catch также необязателен, но если оператор catch отсутствует, то, наконец, должен появиться.
4) Все перехваты, соответствующие дочерним исключениям, должны появляться перед перехватом для родительского исключения.
5) Независимо от возникновения исключения, операторы, присутствующие в блоке finally, всегда выполняются с одним исключением.
т.е. если встречается оператор System.out.exit (), тогдапрограмма немедленно завершается, поэтому в таких случаях, наконец, не может быть выполнена.
Примечание: даже если в блоке try появляется оператор возврата ... tтогда и код в конечном итоге выполняется.