> -- Цитата:
> Если уж нужна такая точность (в чем я сомневаюсь):
Если код изначально пишется безопасным (который не вылетает на пользовательских данных, не портит память, не переполняет стёк и т.д), то обработка должна быть любой потенциально опасной ситуации. И на месте мат. выражений могут быть вполне себе сложные функции. Что это поменяет?

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

## Код:
```
RESULT   :=
      ValidateMinStructSize AND
      ValidateSignatureField AND
      ValidateStructSizeField AND
      ValidateBodyCrc32Field;

RESULT   :=
      (NewLanguage = Client.LangName) OR
      LoadClientLangFromResPack (Client, NewLanguage) OR
      LoadClientLangFromFilePack (Client, NewLanguage) OR
      LoadClientLangFromFileUnit (Client, NewLanguage) OR
      LoadClientLangFromFileStrArr (Client, NewLanguage);
```


Vlad говорит, что в больших объёмах кода с использованием исключений достаточно десятка обработчиков. Мне кажется, что это либо очень общие обработчики верхнего уровня (а что там уже можно сделать?), либо на реальные ошибки просто забили. Обычно нужно видеть код, чтобы судить достоверно.