Цитата(toweroff @ Dec 21 2011, 21:32)

...Функция вернет ошибку (или количество байт не то, которое ждали)...Как правильно сделать одну секцию ошибок, которая сделает (в зависимости от ошибки) одно действие, или несколько секций кода для разных ошибок?Как это правильно делается...
возможно не совсем отвечю на ваш вопрос. и расскажу вам про эксепшены, базируясь на опыте...
но думаю что это даст пищу для размышления.
если совсем по уму, то немного постулатов.
1) проблема, ошибка может возникнуть где угодно по стэку вызова и(или) в любом месте программы. Это становится особо очевидно, когда проект долгоиграющий, поддерживается группой людей, производится дополнения и рефакторинг. на плюсах целесообразно использовать систему эксепшенов для случаев ошибок при возникновении которых нет возможности правильно логически закончить текущую часть кода.
2) не всегда мы имеем право или возможность обработать возникшее исключение в текущем блоке кода (функция, метод). В большинстве случаев критичность эксепшена меняется в меньшую сторону и на более высоком уровне (как правило) есть возможность, при возникновении таких ошибок, вызвать альтернативную функцию(метод) или применить другие параметры вызова для дальнейшей успешной работы необходимого функционала и далее всей программы. Надо добавить, что точки возникновения эксепшена и принятия решения - могут находится на очень удалённом растоянии друг от друга (как по уровням вложенности, так и физически - в разных процессах и даже на разных станциях).
3) тип эксепшена может быть любым. т.к. нет возможности проверить, да и реально по жизни это редко делают (или скажем так - более затратно по вреемени при написании программ), весь стэк вызовов на предмет исключения (ловли) всех левых типов.
4) для уменьшения времени разработки и поддержки готового кода, необходима фиксация всех параметров и условий возникновения эксепшенов. в идеале - фиксация всего стэка падежа, с привязкой к динамических данных, а так-же версии сырцов.
5) в точке принятия решения мы должны иметь возможность проанализировать некоторые признаки (типы) ошибок на предмет корректного поведения (корректные мессэджи либо коретное поведение самого функционала).
6) вся методология и технология применения противодействия эксепшенам должна:
1) как можно меньше зависить от человеческого фактора, в идеале создаваться на автомате.
2) быть простой в использовании.
3) правила применения не должны иметь двоякие толкования либо разночтения.
ну, где то так.
удачи вам
(круглый)
ЗЫ
Что касамое МК - в зависимости от специфики бывает по разному. Но как правило удобны системы содержащие постоянные каналы для контроля узлов и функционирования программы, железа. При этом фиксироваться должны все координаты: привязка к коду, данным, времени, версии сырцов, параметрам окружения.