> -- Galkov писал(а):
> Например, исключение, возникающее в FPU при обыкновенном сложении.
> -- Berserker писал(а):
> Считаю необходимым применение исключений только там, где это действительно нужно - в математических операциях (TRY a+b EXCEPT MathError END).
При этом обработчик находится там же, где и охраняемый код. В Делфи, конечно, можно ещё отключать FPU исключения и проверять на бесконечность или NaN результат.

> -- Galkov писал(а):
> И что теперь - для проведения таковых "исследований" все переписывать с возвратами кодов ошибки  Если говорить правду - очень большая глупость.
Переписывать часть готового модуля/проекта, рассчитанного на исключения действительно неразумно.

> -- Galkov писал(а):
> Есть у нас элемент MathParse - интерпретаро в мат.выражений в run-time. Там разбор "рекурсивный вниз" - вложений по самое небалуйся, в общем.
У меня как раз стояла задача написать интерпретатор выражений в стиле Excel с поддержкой функций и констант. Его я и переписывал с нуля. Обработка (а не вызов) исключений понадобились только в обработчиках мат.операторов. Здесь очень удобной оказалась предопределённая переменная RESULT. В итоге почти все условия и вызовы завязаны на ней.

> -- Galkov писал(а):
> Уверяю, мне было на что поглядеть, чтобы сделать заключение - дурдом на каникулах. Хотя и работающий.
Влад приводил в ЛС похожий пример. Ответ был: если программист способен справляться традиционными структурными средствами и код не становится кашей, а сохраняет лаконичность, то нужды в обработке ошибок исключениями нет и это скорее преимущество, чем недостаток, так как труда перейти на TRY..EXCEPT не составит, а вот обратно, по всей видимости, для многих тяжело.

> -- Galkov писал(а):
> измените аксиоматику.Всякий структурный элемент имеет ДВА выхода.
Нужно и название парадигме менять. С изменением аксиоматики изменяются и свойства кода. В моём предложении у каждого блока только один выход и я могу 100% сказать, где и как будет исполняться код. А выброс исключения - прыжок в неизвестность. Кроме того, мой аргумент про небезопасный код в силе:

## Код:
```
TRY
  Main;
FINALLY
...
END;
```


В вашей программе больше нет ошибок. Магия, не правда ли? В структурном коде обработка ошибок идёт явно и на каждом шаге сохраняется контроль над состоянием программы. Процедура не может сделать скачок на несколько уровней выше, причём скачок низкоуровневый, ну чем не GOTO?

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