Александр Ильин
Просветленный
(40212)
16 лет назад
Дополню предыдущего оратора:
Внутри блока try-except также возможна обработка всех или выборочных исключений, для этого пишем
try
защищаемые операторы
except
on [Тип_исключения] do [операторы_обработки_исключения]
on [Другой_тип_исключения] do [операторы_обработки_исключения]
else
[обработчик_прочих_исключений]
end
Секция else - опциональная, т. е. ее может и не быть
В хелпе это все подробно разжевано.
Теперь вкратце зачем нужно то и другое.
try-except используют в случаях, когда возникшая по какой-либо причине ошибка, например при отсутствии файла, или при ошибке доступа к таблице БД, должна быть обработана каким-либо образом, например отсутствующий файл создастся.
try-finally же используется для того, чтобы при любых ошибках корректно освободить занятые ранее критические ресурсы. Например, в начале блока программа запрашивает большой объем памяти, и чтобы избежать ее утечки, все действия с этим объемом заключаются внутри try, а в блоке finally эта память освобождается. Тогда даже при случайном сбое эта память не будет потеряна.