Я когда решал для себя, что есть структурность, то сделал аксиомой возможность свернуть любой блок и быть уверенным в его выполнении и в выполнении кода после него. Исключение считаю не более чем циклическим GOTO на выход из цепочки процедур и остановки на одном из верхних обработчиков. Так как результаты функций обрабатывать всё равно нужно, то лишнего кода нет. Вам по правилам придётся заключать в try/except вызов любой процедуры/функции.

Допустим, вы имели в виду то, что можете заключить блок из вызова 5-и функций и в случае ошибки хоть в одной из них, обработать её в блоке исключения:
TRY A; B; C; D; E; EXCEPT Error(..); END;
В структурном виде ничего не меняется:
IF A AND B AND C AND D AND E .... ELSE ... END;

Теперь вернёмся к доводу Ильи Ермакова. Возможность быстрого анализа блоков, реиспользования блоков кода.
Вы можете написать такой код с твёрдой уверенностью, что MyFile будет освобождён в конце функции незасивимо от внутреннего содержимого IF-блока? Я могу, и считаю это структурностью. И данное утверждение применимо к любому блоку ниже уровнем иерархически.

Более того, возвращая результат ошибки в виде логического или числового значения, я позволяю функциям более высокого уровня использовать безопасно комплексные условия, а не ограждать себя серией обработчиков исключений на каждый тип ошибки, который нужно обработать по-своему.

Поэтому структурной программой считаю такую, где:
1) Нет BREAK/CONTINUE/EXIT/RETURN
2) Нет исключений
3) Нет GOTO
Своё видение не навязываю.