> -- Александр Шостак писал(а):
> Если применять исключения в виде catch, неясно, что будет в следующей ситуации:C:=sin(a) + sin(b);catch ... // А что ловим? Проблема в "a" или в "b"?

Если уж нужна такая точность (в чем я сомневаюсь):
C:=sin(a);
catch
C:=C + sin(b);
catch

Но это навело меня на мысль: любое возникшее исключение (как и сработавшие на ошибку assert'ы) должно выдавать подробное диагностическое сообщение в специальный стандартный журнал (аналог "черного ящика" самолета). Не всегда последствия ошибок времени исполнения можно предотвратить, но можно будет хотя бы сделать какие-то выводы.

> -- Александр Шостак писал(а):
> Это раз. Во-вторых, теряется возможность на основе логического результата писать цепочки функций:IF NOT (OpenFile(...) AND ReadWholeFile(...) AND (FileSize > 0)) THEN

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