Валерий Лаптев высказывался в пользу механизма исключений для семантического редактора. И действительно, бывают ситуации (машинные сбои, некорректная работа чужих модулей и т.п.), когда механизм исключений необходим (см. библиотечные процедуры Kernel.Try в Блэкбоксе). С другой стороны, его неограниченное использование нарушает парадигму структурного программирования. Но особенности PureBuilder возможно позволят купировать этот недостаток и использовать механизм исключений всегда, когда это необходимо для обеспечения надежности (не для конструирования алгоритма!).

В этой теме предполагается обсудить возможную модификацию механизма исключений с учетом особенностей PureBuilder:

1) В PureBuilder программа не представляется в виде единого текста, а состоит из объектов (подсистем, модулей, функций и процедур, выражений и т.д.), отображаемых в отдельных окнах. Все элементы такого объекта программы (для процедур - входные и выходные параметры и локальные переменные) специфицируются стандартным и подробным образом в специальных таблицах интерфейса. Синтаксис механизма исключений в PureBuilder может кардинальным образом отличаться от обычного, например, могут использоваться таблицы элементов или их параметров. Следовательно,можно перехват исключений привязать непосредственно к месту их возможного возникновения, и можно явно и принудительно ограничить случаи, когда программист может использовать механизм исключений. Такие ограничения сейчас устанавливаются корпоративным стилем программирования.

2)В интерфейсе PureBuilder можно предусмотреть место для перехвата и обработки кодов ошибок, возвращаемых функциями и процедурами. Такие коды ошибок в необходимых случаях могут стать обязательными.

3) PureBuilder нет границы между языком и стандартной библиотекой.

4) В PureBuilder имеется среда времени исполнения, на которую можно возложить обработку исключений.

В этой теме может также обсуждаться возможная модификация тех ASSERTов, которые связаны с исключениями.