Описание:
Except имеет два разных синтаксиса:
Версия 1
В этой версии, если в операторе Try возбуждается исключение, то выполняется блок Except. Этот вариант используется для совершения альтернативных действий, когда что-то пошло не так. Однако, блок except в этом случае не может определить тип ошибки.
Версия 2
Она подобна версии 1, но задает разные действия для разных типов исключений, таких как EInOutError. Оператор Else может быть использован для обработки всех непредвиденных типов исключений. Общий тип исключения Exception может быть использован для обработки всех типов исключений.
Текст с сообщением исключения (Имя.Сообщение - Name.Message) может быть получен посредством присваивания исключению имени, для показа на экране или других целей.
При возбуждении исключения, как во второй версии, если исключение не было обработано в операторах On или Else, осуществляется проверка, не находимся ли мы во вложенном блоке Try. Если это так, то обработка передается блоку Except родительского Try. Если в нем не найдено ни одного On или Else, программа завершается.
Оператор Else на самом деле не очень нужен - лучше использовать On E:Exception Do, основной способ обработки исключений, тем более что он предоставляет доступ к тексту ошибки (E.Message).
Важно: вы можете определить тип случившейся ошибки, используя основной способ обработки исключений - On E:Exception Do. E - это указатель на объект исключения, который был создан в соответствии с условием исключения. E.ClassName содержит тип исключения, такой как 'EDivByZero', как это показано в последней части кода примера.