Здравствуйте, kov_serg, Вы писали:
L>>_>Пример ситуация: у вас крутится N конечных автоматов.
L>>Дальше можно было не продолжать.
_>Как нистранно микроконтлоллеры по такой схеме управляют оборудованием и всё работает как часы.
Конечный автомат не обрабатывает исключительные ситуации. По определению. Все события КА ожидаемы, иначе это не КА.
Поэтому пытаться доказать "ущербность" исключений, приводя в пример КА, есть демагогия и передергивание.
_>И обработка ошибок можно сделать очень по детски, но при этом будет работать и все ресурсы будут освобождены.
_>_>void fn() {
_> if (init()) { perror("init"); exit(1); }
_>}
_>
Ага, ровно до того момента, пока функция init() не начинает захватывать второй, третий, двадцать пятый ресурс. Не надо сказки рассказывать
_>А вот на C++ не сможете так написать, не потому что это невозможно, а потому что другая парадигма.
На C++? Могу, какие проблемы позвать exit в случае облома? Только зачем?
А вот слабо изобразить функцию init(), которой требуется корректно захватывать более одного ресурса и корректно освобождать все ранее захваченные в случае облома одного, и которая не превращается в страшенное сплетение макарон или очередной пример подхода "C++ плохой, поэтому мы эмулируем деструкторы вручную" на чистом Си?
_>И какой-нибуть серверный hello world будет генерировать гигабайтные war файлы.
А если у бабушки будет сами знаете что, то....