Разница между catch и finally в конструкции try-catch заключается в их функциях.
Catch — это блок инструкций, которые выполняются, если в блоке try возникает исключение. 1 Этот блок может обработать исключение, проигнорировать его или заново сгенерировать исключение. 1 В блоке try-catch может быть больше одного catch. 3 Если происходит исключение, выполняется код первого подходящего блока catch. 3
Finally — это блок, который содержит инструкции, выполняющиеся всегда, независимо от того, что произошло в блоке try. 13 Он используется для выполнения заключительных операций после выполнения программного кода в продолжении try. 1 Блок finally сработает, даже если в try или в catch код наткнётся на return. 3 Единственный случай, когда finally не срабатывает, — критическая ошибка, когда программа вылетела или у неё закончилась выделенная память. 3
Таким образом, catch предназначен для обработки исключений, а finally — для выполнения определённых операций в любом случае, независимо от наличия ошибок.