Вы в пример приводите запуск подпроцесса (код модуля, поток) и его тихую ликвидацию через перехват исключения с той целью, чтобы вся система продолжала работу. Я не против.
> -- Berserker писал(а):
> Также ничего страшного нет в том, чтобы ловить исключения отдельных потоков, при условии, что они после этого будут тихо убиты и что они сама RAISE не вызывают.
Если вы хотите записывать в логи исключения, то пожалуйста, перехватывайте:
## Код:
```
TRY
  Main;
EXCEPT
  LogErrors; HALT;
END
```

Но не стоит превращать средство обработкиисключительныхситуаций в средство обработкиобычныхситуаций (изначально предусмотренных). Если вы открываете файл, то вы предполагаете, что он может и не открыться, так как поведение функции зависит от внешней среды. Возврат ошибки файловой системы это не исключительная, а рядовая ситуация. Для массивов или списков индексы нужно проверять, если индекс пришёл из внешнего источника. Ошибка NEW для программы фатальна. Можно перехватить её на верхнем уровне, показать диалог и всё равно прикрыть программу, так как её дальнейшее поведение некорректно. А если, делая запрос на выделение памяти, вы всё же рассчитывали на ошибку, то вызывайте какой-нибудь SafeNew с внутренней обработкой и возвратом BOOLEAN.

Иными словами, я не против обработки исключений как таковой, ибо это попросту глупо пытаться обойтись без неё (как в ББ). Тем не менее, исключения должны применяться только для обработки именно исключительных ситуаций (мат.операции (со)процессора, отказ работы потока, отказ работы модуля, экранирование языковых конструкций, которые вызывают исключения).