Mishka>> Забавно, а какое решение предложите Вы, когда не хватит памяти в программе для управления железом?
Balancer> Я бы засунул assert
Нормальный assert, обычно, работает только в режиме отладки.
Тут есть несколько разных философий:
1. Проигноривать ошибку и идти дальше — авось пронесёт.
2. Типичное решение — сигнализоровать об ошибки и а) вернуть код наверх — как мы видим в приведённом кусочке кода или б) ломануться тут же — что-то типа assert-а.
3. Попытатся воспроизвести правдоподобные результаты и выдать их. Многие real-time ребята склоняются к этому решению. Работать хоть как-то. Правда, часто выходит, что хоть как-то хуже, чем никак.
Кстати, в трагедии Ареана последний подход и был реализован. Просто рассогласование входных, выходных данных интерфейсов различных модулей были несогласованны и один модуль, базируясь на правдоподобных данных (он их не должен был принимать) выполнил то, чему его учили — подрыв.
Вот я и интерисуюсь у товарища — какое бы он принял решение.